位置: 编程技术 - 正文

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

  • 实际发的工资跟个人所得税不一样
  • 农副产品商贸公司标语
  • 分公司亏损总公司怎么办
  • 个体工商户2023年税收政策
  • 外商投资企业与内资合资是国企吗
  • 加建工程部分结算款如何做会计分录呢?
  • 私车公用产生的过路费怎么开发票
  • 已抵扣红字发票信息表怎么开
  • 应交税金成负数
  • 增值税的税负率就是用应缴纳的增值税总额
  • 小规模季度不超过45万的税收优惠
  • 公司股票卖出会计处理
  • 油罐车运输费用怎么算
  • 金税三期退税
  • 政府补贴可以税前扣除填写在哪里
  • 进项借方有余额怎么调账
  • 个人独资企业没有公司章程吗?
  • 无形资产软件摊销年限的最新规定2021
  • 废旧物资缴纳增值税政策
  • 员工出差买的保险怎么入账
  • 王者荣耀电脑版叫啥名字
  • 收到政府返还土地款 奖励 土地增值税
  • 股东投入的资金可以退回吗
  • 固定资产未开发票怎么入账
  • 管理费用怎么结转分录
  • 长期待摊费用挂账原因
  • 退回多缴的所得税怎么算
  • PHP:Memcached::quit()的用法_Memcached类
  • 应交增值税视频讲解
  • 临时用工怎样做账
  • php变量用什么符号
  • 盈余积累转增股本什么意思
  • 业务招待费的纳税筹划
  • framework启动
  • softag
  • php base64 编码与解码实例代码
  • php网站安全防护
  • php运用
  • js javascript
  • 强制缓存与协商缓存的区别
  • 宝塔怎么做?
  • 财务软件服务合同要交印花税吗
  • 房地产转让条例最新
  • 会计怎么计算
  • 差旅费报销可以直接从公账转到个人账户吗
  • sql server备份数据还原不了怎么办
  • mongodb分区分片
  • 餐饮发票数量单价都填0可以用吗
  • 什么叫做印花??
  • 利润表季报的本期金额
  • 合并报表调整分录理解
  • 普通发票的开具规定是?
  • 汽车销售行业印章要求
  • 公司为员工异地缴纳五险一金
  • 去年的福利费没有用完,今年可以用吗
  • 展厅租赁税率
  • 申报个税劳务报酬按20%扣
  • 什么情况下增值税发票不能抵扣
  • 增值税年末一定要结转吗
  • windows vista ie9
  • 用心一也的一是什么词类活用
  • centos failed to start login service
  • windrv.exe
  • win7系统误删文件可以恢复吗
  • win10界面虚化模糊
  • cocos-2dx
  • 批处理安装
  • 用css制作网页的步骤
  • jquery.Callbacks的实现详解
  • unity openvr
  • js的a标签
  • js最简单的代码
  • javascript的for循环
  • 用nodejs做的项目
  • 原生js实现ajax步骤
  • python跑出异常
  • javascript 自动执行
  • jquery+ajax+text文本框实现智能提示完整实例
  • python,web
  • 重庆准生证网上怎么申请领取
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设