位置: 编程技术 - 正文

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

  • 信息技术服务增值税
  • 平行结转分步法各步骤的费用
  • 围挡属于什么类型
  • 用友t6如何生成当月的财务报表
  • 定额发票收入怎么报税
  • 理财产品产生的利息怎么入账
  • 个人车卖给公司能抵税吗
  • 独资企业是向地税申报个税吗
  • 中外合资房地产公司
  • 企业公益性捐赠支出税前扣除标准
  • 分公司注销存货处理
  • 互联网合同要交社保吗
  • 小规模企业季度超过30万,怎么收取增值税
  • 农产品销售发票是什么?
  • 关于旅行社代订的通知
  • 加工产品不一定有合理损耗
  • 收入纳税明细怎么打印
  • 企业收购股权要交税吗
  • 子公司销售给母公司商品
  • 小规模纳税人建筑行业
  • 航天信息服务费是什么费用
  • appdata文件夹在用户文件夹哪里
  • win10默认网关自动清空
  • 应收账款与主营业务收入的比率
  • windows 11任务栏没有网络图标
  • 企业因政策性原因发生的巨额经营亏损
  • win10右键菜单管理在哪打开
  • 受赠与获赠的区别
  • wordpress拿shell
  • 事业单位接受捐赠固定资产入账
  • anaconda下的python
  • convwthn如何定义
  • 获取谷歌浏览器cookie
  • js栈堆的区别
  • js 字符串 中 字符位置
  • 企业所得税中工资总额
  • 增值税发票认证结果通知书在哪里打印
  • 帝国cms如何使用
  • 个税申报和社保申报的金额要一致吗
  • phpcms 用的是什么模板引擎
  • dedecmsv6插件不能用
  • 广告公司的一般纳税人税率是多少
  • 非营利企业的劳动力需求有哪些特点
  • 电子承兑汇票到期提示付款后多久到账
  • 小规模公司累计增值税
  • 生活服务业可以开具增值税专用发票
  • 以前年度多计收入今年怎么调整
  • 水电费 会计
  • 企业专项资金购买固定资产
  • 购买的车位是否要交税
  • 工程异地施工缴什么税
  • 每个月房租
  • 家电销售范围包括哪些
  • 汇算清缴水电费没有发票填在哪里
  • 不交社保如何在网上投诉
  • 小企业核算方式选独立核算
  • 技术服务费发票怎么开
  • 固定资产原值如何计算
  • 抵扣联和发票联的区别
  • mysql连接时间长怎么优化
  • sqlsever导入数据时出现ole db连接数据无效
  • xp系统玩游戏卡吗
  • linux gunzip
  • 重装系统前 病毒怎么办
  • 如何设置win10自动登录
  • fsmb32.exe是什么进程 作用是什么 fsmb32进程查询
  • win7手动更新在哪里设置
  • Linux VPS vsftp/proftpd FTP时间差八小时的解决方法
  • 怎样解决windows照片查看器无法显示此图片
  • css 间距
  • python三角形角度
  • Bullet(cocos2dx)学习制作桌球游戏之前期准备
  • node.js中的http.response.write方法使用说明
  • JavaScript事件类型中UI事件详解
  • js根据name取值
  • 安卓开发界面ui设计器
  • 个人彩票收入属什么类别
  • 上海手撕发票多少钱一本
  • 青岛新农合咨询电话
  • 注册会计师人员名单
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设