位置: 编程技术 - 正文

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

  • 白酒消费税税率多少钱一吨
  • 小企业外币交易的类型有哪些
  • 其他应收款审计说明怎么写
  • 超过认证期的发票能用吗
  • 提完折旧的车卖掉划算吗
  • 税务局登录账号是多少
  • 普通发票,供货怎么开
  • 账本一般保存几年就可以销毁2004年的规定
  • 保险公司营销人员个人先进事迹材料
  • 托收承付怎么理解
  • 应收账款少收的款分录
  • 质量问题扣对方货款账务处理
  • 开专票还要另外再交钱么
  • 可转换债券发行主体
  • 退货款现金流量表填经营活动的什么科目
  • 开了票后才收到工程款怎么做账?
  • 滴滴 增值税
  • 房产赠与税如何征收2021
  • 金税盘一直更新登陆不进去
  • 航空运输的湿租业务按什么缴纳增值税
  • 计算广告的基本运作模式
  • 二手车交易公司需要什么资质
  • 年所得12万元以上的纳税人,在纳税年度终了后
  • 外汇实收资本如何做账
  • 汽车保险费里的钱能退吗
  • 无偿划转净资产为负数的企业账务处理
  • 坏账准备的计提应当关注
  • 出售已使用五年的住房有税收优惠吗?
  • 采购流程会计分录怎么写
  • linux查杀webshell
  • 固定资金的特点
  • 中拍网拍卖
  • 付临时工资怎么入账
  • 税后讲课费的个税由谁承担
  • 认缴制注册资金怎么处理账务
  • php上传图片大小限制
  • 任意公积金可以不提取吗
  • thinkphp教程
  • php输出mysql查询结果
  • dns configuration
  • 理财资金用途
  • 购买商品发生的费用计入
  • 企业会计准则规定了
  • 收到预付款怎么入账
  • 企业所得税放入什么科目
  • 实收资本一定要到账吗
  • 住房公积金指的是什么意思
  • 海关双抬头进口增值税发票如何抵扣
  • 企业刚注册成功又要注销要什么手续
  • 帮别的公司付款后发票该给谁开
  • 申请个税退税账号是什么
  • 加油充值卡能报销吗
  • 已付款收货未收货怎么办
  • 小规模纳税人租赁费税率
  • 工业企业低值易耗品二级科目
  • linux系统中
  • solaris 10安装
  • win7users移动其它盘
  • xp系统怎么删除系统
  • 直接内存访问控制器是什么
  • win8网页打不开
  • linux使用cp
  • Linux JDK,TOMCAT安装及环境设置
  • linux ili9341
  • mac的mail登不上
  • linux 管道实现
  • windows wps
  • kernel headers not found for target kernel
  • promise实例方法
  • 杀掉进程windows
  • 支持向量机
  • python教程详细
  • linux安全加固的内容是什么
  • jQuery中ajax的load()与post()方法实例详解
  • python简明
  • python-pip安装
  • 深入理解新发展理念
  • 从重置手
  • 成品油消费税税率2023
  • 广西城建投资集团官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设