位置: 编程技术 - 正文

使用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
  • 车间用的电线计入什么科目
  • 固定资产特性
  • 户口与工作地不一致,社保
  • 开发间接费属于期间费用吗
  • 公司投资的股权财产怎么认定
  • 实际利率法的计算过程
  • 用现金购买的股票
  • 房地产开发资质管理办法
  • 即征即退的增值税需要缴纳附加税吗
  • 公司注册资本会留存多少
  • 过渡期申报什么意思
  • 建筑施工企业开立临时账户
  • 物业管理公司代收水电费如何开票
  • 停车场会计科目设置
  • 报关单毛重错了被海关查到
  • 微信支付宝余额为零的表情包
  • 小规模税率还是1%吗
  • 延期收款利息如何算
  • win10蓝屏怎么弄
  • 删除文件时不放大怎么办
  • Win11 Build 22454.1000 开发者预览版发布(附更新修改已知问题+安装)
  • 补申报以前年度税款
  • 如何使用php
  • 购入研发设备
  • 股票发行费用怎么处理
  • php获取网页视频地址
  • 运输企业成本核算内容有哪些?
  • 签合同要注意些什么
  • 高新技术企业研发费用占比要求
  • Honeybee flying over crocuses in the Tatra Mountains, Poland (© Mirek Kijewski/Getty Images)
  • 增值税减免税的征管规定有哪些
  • 秋日里通往卢浮宫的杜乐丽花园,法国巴黎 (© Brian A. Jackson/Getty Images Plus)
  • 基于php的系统
  • php数组操作函数
  • vue element ui
  • 增值税税控系统专用设备费及技术维护费抵扣
  • 包装物逾期是什么意思
  • php导出表格
  • 材料暂估入账
  • 一般纳税人销售货物税率
  • 酒店行业销售费用占比
  • 烟草专卖生产企业许可证
  • 房地产企业增值税预征率
  • 所得税申报表里季初资产是指什么
  • 公司自主研发新能源汽车
  • 车间设备折旧费计入产品成本吗
  • 小规模普票怎么开
  • 增值税专用发票有几联?
  • 多计提的城建税怎么冲减
  • 企业购买国债逆回购要交企业所得税吗
  • 跨年多计提的工资如何处理
  • 公司运营成本如何计算
  • 公司中征码是什么样子的
  • 播放windows xp
  • xp系统内存不能为read的解决方法
  • 支持iphone
  • linux防火墙放行
  • win8 蓝牙
  • 禁用强制驱动程序签名有什么用
  • js 编辑框
  • Cocos2d之CCScene
  • unsupportedclassversion
  • ubuntu系统怎么安装
  • qt widget opengl
  • 原生js实现路由
  • linux中使用bash是什么意思
  • nodejs 调用python代码
  • bat批处理if命令
  • unity常用代码
  • 如何查发票是否作废
  • 盐城合作医疗在手机上怎么交
  • 江苏税务实名认证怎么更改
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设