位置: 编程技术 - 正文

使用Mixin设计模式进行Python编程的方法讲解(mixed模型)

编辑:rootadmin

推荐整理分享使用Mixin设计模式进行Python编程的方法讲解(mixed模型),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mixlogit模型,mixin设计模式,mixin设计模式,mix模型,mixlogit模型,mixin使用场景,mix模型,mixin设计模式,内容如对您有帮助,希望把文章链接给更多的朋友!

Mixin模式是一种在python里经常使用的模式,适当合理的应用能够达到复用代码,合理组织代码结构的目的。

Python的Mixin模式可以通过多继承的方式来实现, 举例来说,我们自定义一个简单的具有嵌套结构的数据容器:

SimpleItemContainer通过python内置类型Dict来存放数据,不过到目前为止想要访问对应的数据还是得直接调用里面的字典,没法像原生的字典一样方便的通过暴露出来的api访问数据。当然也可以从头开始把完整的Dictionary Interface完全实现个遍,不过在每个自定义的类似的容器中都来一套肯定不行,这时候利用python内置的UserDict.DictMixin就是一个不错的方式:

使用Mixin设计模式进行Python编程的方法讲解(mixed模型)

from UserDict import DictMixin

通过实现最小的Dictionary Interface,还有继承DictMixin实现Mixin模式,我们就轻松获得了完整的原生字典的行为:下表语法,get, has_keys, iteritems, itervalues甚至还有iterable protocol implementation等一系列的方法和实现。

很多框架比如Django, Django rest framework里面就普遍用到了Mixin这种模式,定义api或者viewset的时候就能够通过多重继承的方式服用一些功能

当然,Mixin模式也不能滥用,至少他会污染你新定义的类,有时候还会带来MRO的问题;不过把一些基础和单一的功能比如一般希望通过interface/protocol实现的功能放进Mixin模块里面还是不错的选择:

其实整个理解下来无非就是通过组合的方式获得更多的功能,有点像C#, java里面的interface,强调“it can”的意思,但相比起来简单多了,不需要显示的约束,而且mixin模块自带实现。在使用的时候一般把mixin的类放在父类的右边似乎也是为了强调这并不是典型的多继承,是一种特殊的多继承,而是在继承了一个基类的基础上,顺带利用多重继承的功能给这个子类添点料,增加一些其他的功能。保证Mixin的类功能单一具体,混入之后,新的类的MRO树其实也会相对很简单,并不会引起混乱。

Python按行读取文件的简单实现方法 1:readline()file=open("sample.txt")while1:line=file.readline()ifnotline:breakpass#dosomethingfile.close()一行一行得从文件读数据,显然比较慢;不过很省内存;测试读M的sam

深入浅析python中的多进程、多线程、协程 进程与线程的历史我们都知道计算机是由硬件和软件组成的。硬件中的CPU是计算机的核心,它承担计算机的所有任务。操作系统是运行在硬件之上的软

python中的lambda表达式用法详解 本文实例讲述了python中的lambda表达式用法。分享给大家供大家参考,具体如下:这里来为大家介绍一下lambda函数。lambda函数是一种快速定义单行的最小

标签: mixed模型

本文链接地址:https://www.jiuchutong.com/biancheng/387712.html 转载请保留说明!

上一篇:详解Python中的from..import绝对导入语句(python中fd)

下一篇:Python按行读取文件的简单实现方法(python按行读取文本并输出到excel)

  • 小企业汇算清缴要审计报告吗
  • 增值税发票抵扣是什么意思
  • 代付的费用收不收手续费
  • 固定资产出售如何申报增值税
  • 公司注销公户没注销会如何
  • 自然人独资是小规模纳税人吗
  • 其他综合收益何时转投资收益
  • 小规模开普票多少税点
  • 小规模纳税人报税前需要做什么
  • 建设工程未交付什么意思
  • 出纳做账流程视频
  • 购销合同印花税优惠政策
  • 计提物业费会计分录
  • 销货清单怎么写才正规
  • 出租设备应计入什么科目
  • 建筑安装企业成本费用包括哪些
  • 非独立核算不用做核算吗
  • 咨询服务费怎么结转成本
  • 股东私人垫支公司支付零星材料的会计分录
  • 出售股票或债券的条件
  • 工会基金是扣个人还是扣企业的
  • 生育津贴还扣税吗
  • 白酒消费税最低计税价格
  • i5 8500装win10
  • 建筑劳务公司开票税率是多少
  • 华为p30分屏怎么操作
  • 经济作物国家有什么补助吗
  • win10 热键
  • 委托外单位加工发出的材料会影响账面价值吗
  • 前端架构怎么搭建
  • 银行开户费用怎么做账
  • 气象数据32766
  • struts2漏洞检测工具下载
  • php access_token
  • php实现文件上传的函数
  • 房地产代理公司资质证书
  • discuzq是个做什么
  • 股东分红放到哪个会计科目
  • 公司的日常费用包括哪些
  • 什么情况下需要异地预缴增值税
  • 用友重新安装步骤
  • 仓库折旧会计分录
  • Python变量中forain
  • 超出python用什么
  • 电子章打印不来
  • 免税农产品有哪些类型
  • 优先股和普通股风险哪个大
  • 商家的这些行为对消费者的购买行为有什么影响
  • 稳岗补贴操作
  • 事业单位的财政拨款怎么做账
  • 多栏式日记账核算组织程序优缺点
  • 建筑公司工资如何
  • 固定资产更新改造被替换的旧部件残值收入
  • 车船税收费标准
  • 工伤费退回会计分录
  • 收到个人所得税手续费返还如何做账
  • 会计记账中借方和贷方
  • 企业经营规模小怎么办
  • sqlserver代理服务启动失败
  • sql server 错误
  • c 语言 mysql
  • hyper-v虚拟机无法初始化
  • windows vista可以换7吗
  • ibm笔记本开机进不去系统
  • 蓝屏 win7
  • win7文件无法删除需要权限
  • .mcp是什么文件
  • win7如何隐藏文件夹最近使用记录
  • shell if-z
  • vmwareUbuntu虚拟机硬盘扩容
  • vue配置api
  • 批处理/d
  • android activity回调函数
  • Tasharen Fog of War v1.0战争迷雾插件的使用(含Unity5.0Bug解决)
  • 用javascript
  • 黑马程序员培训怎样
  • python线程daemon
  • 增值税征税范围口诀
  • 机动驳船是什么
  • 北京税务代办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设