位置: 编程技术 - 正文

使用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)

  • 房屋出租何时缴税
  • 留抵抵欠条件
  • 税前经营利润计算
  • 接受捐赠的增值税处理
  • 金税四期什么时候全国运行
  • 资产总额季度平均值计算公式
  • 银行汇票可以异地跨行使用吗
  • 公司入股资金有发票吗
  • 商铺租赁合同的用途怎么写
  • 高速公路通行费发票可以抵扣增值税吗
  • 长期待摊费用新规定
  • 营业收入包括其收入吗
  • 通行费发票如何开具
  • 企业接受固定资产投资
  • 个人所得税费怎么计算2021
  • 法人名下两家公司,客户买货可以用另外一个公司开票吗
  • 进口采购交的增值税
  • 批发零售的成本核算
  • 信用减值损失借方余额在利润表中
  • 按年缴纳年金的企业缴费部分,应按照全年一次性奖金
  • 非正常损失进项税额转出计算
  • 零申报逾期未申报怎么补报
  • mac电脑command键快捷设置
  • 工资薪金专项扣除项各多少
  • php二维数组遍历
  • 定额发票收入
  • rtc resume
  • 收到供应商现金回扣
  • 委托代销委托方需要开发票吗
  • 无形资产摊销会影响利润吗
  • 视同销售的会计处理怎么做?
  • 分支机构分摊税款的计算
  • 跨年调整收入增值税怎么办
  • php框架symfony
  • php 反代
  • php pdo sqlserver
  • 期末余额跟年初余额是什么意思
  • vue项目如何启动运行
  • php initialize
  • 新成立的公司怎么算生育津贴
  • 对外长期投资会计分录?
  • 增值税专用发票的税率是多少啊
  • 出口退税后发生退货怎么处理
  • phpcms v9安装教程
  • 民办非企业单位属于什么类型
  • mysql 忘记密码重置密码
  • 机器设备可以作为出资方式吗
  • 税金及附加需不需要计提
  • 可以报销的票据种类
  • 什么是年化收益和绝对利率
  • 机票报销是什么发票
  • 伙食堂是什么意思
  • 利润分配的账务处理实验报告
  • 事业单位会计的特点
  • 设计费要计入固定成本吗
  • 协定存款是什么存款
  • 社保退回的钱怎么做会计分录
  • 给别人的借款怎么记账
  • 固定资产清理和持有待售资产
  • 正确使用气体钢瓶的原则
  • 做好一个服务器工作
  • vmware安装macos10.15
  • ubuntu和debian哪个稳定
  • eudcedit.exe
  • macos time machine
  • linux awk -v
  • window98到windows10
  • Context.getExternalFilesDir()和Context.getExternalCacheDir()方法
  • mysql命令备份数据库
  • vue如何处理跨域
  • 自定义标签的开发的3个步骤?
  • bat批量创建文件夹及子文件夹
  • asynctask优缺点
  • jquery js区别
  • python 获取uuid
  • 投诉政府平台在哪里投诉
  • 营业税金及附加结转分录
  • 免征增值税的销售额
  • 个人工资所得税缴纳标准2023年
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设