位置: 编程技术 - 正文

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

  • 培训机构财务怎么做账
  • 固定资产清理属于流动资产吗
  • 个税系统如何升级到最新版本
  • 资产负债表项目的编制方法
  • 固定资产一次性折旧的账务处理和税务处理
  • 房地产开发企业资质证书
  • 汇总记账凭证长什么样
  • 计提坏账准备的做法体现了什么的信息质量要求
  • 事业单位代扣社保公积金分录怎么写的
  • 建筑行业的收入是什么
  • 机关单位工会经费的来源包括
  • 来料加工税务账应采取哪种核算方式?
  • 代开建安发票怎么做账务处理?
  • 年底没有取得发票企业所得税
  • 自行建造厂房一座,现已完工,经验收后交付费用
  • 土地使用税每个月都要计提吗
  • 定额手撕发票怎么买
  • 慈善基金会的含义
  • 未担保余值是什么意思
  • 冲回坏账准备分录
  • 收到的劳务费发票可以抵扣吗
  • 公司账户里的钱有利息吗
  • 商铺水费收取标准2020
  • 免费WiFi万能钥匙
  • 设备安装服务费税收分类编码
  • 增值税加计抵减最新政策2022
  • 长期贷款利息怎样计算
  • pssvc.exe - pssvc是什么进程 有什么用
  • 公账如何存钱
  • php教程全集
  • 云杉树下面长什么蘑菇
  • 礼的部首是什么部
  • php include require
  • 视频监控接入方式有哪几种
  • 蓝桥杯2021出结果
  • php实现会话的步骤
  • 企业转让无形资产取得的收益应计入营业外收入
  • vue导航方式
  • 织梦停止更新了吗
  • mongodb数据库中使用哪个数据库可以设置用户名和密码
  • PostgreSQL教程(十七):客户端命令(1)
  • 增值税零税率与免税谁更优惠
  • 财务费用报销流程图word
  • 一般纳税人其他咨询服务税率
  • 固定资产置换存货
  • 暂估和开票的差异 erp处理
  • 公司缴纳个人所得税有什么用
  • 不动产租赁按简易计税吗
  • 衍生工具的作用是什么
  • 会议中发生的相关事件
  • 一次性购买多张火车票
  • 环境会计的构建方法
  • mysql数据库迁移方案
  • linux 查看so
  • win10系统自带
  • win8摄像头权限怎么设置
  • ubuntu20.04忘记root密码
  • 在Ubuntu Trusty 14.04 (LTS) (64-bit)安装Docker的步骤
  • linux挂载yum
  • 在win8下能直接装win7吗
  • linux小技巧
  • Extjs4 Treegrid 使用心得分享(经验篇)
  • visual studio 10 cocos2dx项目移植到eclipse的android项目(配置请参照上一篇文章开发环境搭建)
  • linux升级python2.7
  • 批处理!!
  • 深入理解关于教育两个大计
  • node.js最新版
  • jquery自带的弹出框
  • [置顶]JM259194
  • java script教程
  • python中的编码
  • python 代码缩进
  • 上海个人所得税优惠政策
  • 上海税务网上报税
  • 深圳税务网上申报客户端更正申报流程
  • 资本结构不合理的公司有哪些
  • 汽车商业险退保还有手续费吗
  • 税务发票小助手 小程序二维码
  • 出口退税网上申报流程
  • 怎么查国税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设