位置: 编程技术 - 正文

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

  • 个税待报解预算收入怎么使用
  • 税务师考试需要记忆的税率
  • 疫情期间固定资产折旧优惠政策
  • 员工提成比例怎么分配
  • 个人独资 所得税
  • 金税盘减免账务处理
  • 空调安装发票税率
  • 小规模纳税人开了3%的专票还能享受1%
  • 商贸企业加工费包括哪些
  • 营业成本增加会导致
  • 土地增值税清算的条件
  • 向境外分配股息
  • 高速公路通行费电子发票怎么打印
  • 借款可以转注资款吗
  • 收到理财产品收益分录
  • 自行开发的软件如何确认为无形资产
  • 小规模增值税多少个点
  • 企业自行去税务开具房租发票税款怎么做?
  • 个税什么情况可以不用汇算
  • 办理核定企业所需资料
  • 普通发票单张限额
  • 母公司并购子公司需要股东会决议吗
  • 公司账上的钱如何取出来
  • 承兑贴息收入账务处理怎么做?
  • 公益性捐赠增值税申报表怎么填
  • 增值税的特殊销售方式有哪些?税务处理时怎样的?
  • 自行生产的存货转固定资产怎么做账
  • 允许扣除的土地价款怎么计算例题
  • 应用程序发生异常 未知的软件异常(0xe06d7363)
  • windows11咋样
  • 稿酬计入工资所得吗
  • 暂估入库怎么处理
  • 广告制作费属于劳务还是服务
  • php文件可包含哪三部分代码
  • 鸿蒙系统值得升级嘛
  • pavmail.exe - pavmail进程是什么文件 有什么用
  • 个人开工程款票在哪开票
  • PHP:Memcached::decrement()的用法_Memcached类
  • avgnt.exe
  • 公司一直没有收入怎么办
  • vue3使用vueup/vue-quill富文本、并限制输入字数
  • 可视化大屏的几种模式
  • php扩展开发参考手册
  • 职工教育经费可以有余额吗?
  • 财税[1994]26号
  • linux ar命令
  • 小规模免增值税政策从什么时候开始
  • 织梦技术论坛
  • 政府补贴流程
  • 哪些收入需要缴纳个人所得税
  • 小规模纳税人三减一政策
  • 企业哪些情况下需要报税
  • mysql的主从
  • 纳税人减免税申请表怎么填
  • 样机 研发费用归集与核算
  • 支付结算的法律构成
  • 销售收入分成率公式
  • 政府补贴项目需要审批吗
  • 工商营业执照变更网上怎么操作
  • 投资收益科目的借贷
  • 会计中原始凭证是什么意思
  • 汽车折旧年限是多久
  • Win8.1 VPN设置功能提示连接出错的简单解决方法
  • 在linux2.4.0版本中
  • win8系统怎么清理缓存
  • 怎么备份和恢复goodnotes中的数据
  • WINDOWS操作系统属于什么操作系统
  • windowsxp oobe
  • cocos2d动画
  • 进程 python
  • shell示例
  • python抓取网络数据
  • react和nodejs
  • js获取tbody下的tr
  • <script defer> defer 是什么意思
  • 免税企业可以收增值税专票吗
  • 五联发票每一联的作用
  • 党建共建的目的意义
  • 重庆市网上审批服务大厅
  • 美国对华征收关税的优点和不足
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设