位置: 编程技术 - 正文

深入理解Python中的super()方法(深入理解python特性 pdf)

编辑:rootadmin

推荐整理分享深入理解Python中的super()方法(深入理解python特性 pdf),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python深入浅出,python的理解,如何理解python语言,深入python3,浅谈python,python的理解,深入python3,深入理解python特性 pdf,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

python的类分别有新式类和经典类,都支持多继承。在类的继承中,如果你想要重写父类的方法而不是覆盖的父类方法,这个时候我们可以使用super()方法来实现

python语言与C++有相似的类继承,在类定义时,python中会自定义第一个self,类似C++中this指针,指向对象自身。

python简单的类举例:

当然在实际中不可避免的需要类的继承,子类继承父类,正常如下:

在python中还提供了super()机制,例子如下:

深入理解Python中的super()方法(深入理解python特性 pdf)

注意

Python2.2以前的版本:经典类(classic class)时代

经典类是一种没有继承的类,实例类型都是type类型,如果经典类被作为父类,子类调用父类的构造函数时会返回这样的错误 '''TypeError: must be type, not classobj'''

这时MRO的方法为DFS(深度优先搜索(子节点顺序:从左到右))。所以本文中使用的是新式类,而新式类的搜索算法是C3算法

上面的代码中C是父类,D是子类,我们在D类重新定义了minus方法,就是在C类的功能基础基础上新添print 'hello'功能。super在这里的作用就是在子类中调用父类的方法,这个也是在单继承常见调用super()的用法。那么问题来了

那么上面的代码中b.n的输出是什么呢?为什么结果是2呢,而不是5呢?super(B,self).minus(m)明明是调用了父类的minus方法,可是输出结果就是2,是你要明白现在B的实例,而不是A的实例,那么传递的self.n的数值是7,而不是.

那么对于多继承的时候,super又是怎样工作的呢?来,现在创建一个继承A的C类,然后再创建一个继承B,C的D类,看看怎样调用super是重写方法。

如上的代码输出的结果是什么呢?别心急,先看看它是怎样运行的。上面提及到新式类寻找子节点时候使用的是C3算法。那么它是怎么找呢。D->B->C->A->object。怎样才能验证这个顺序是对的呢。

Mro是什么呢?对于你定义的每一个类,Python 会计算出一个方法解析顺序(Method Resolution Order, MRO)列表,它代表了类继承的顺序。

总结

标签: 深入理解python特性 pdf

本文链接地址:https://www.jiuchutong.com/biancheng/372297.html 转载请保留说明!

上一篇:python实现读取excel写入mysql的小工具详解(python中读取excel)

下一篇:python中学习K-Means和图片压缩(python kmeans sklearn)

  • 公司有买社保就要交税吗
  • 外贸 代理
  • 工程款税率是多少专票
  • 个体户核定征收需要做账吗
  • 记账凭证背面怎么填写
  • 其他综合收益是什么类科目
  • 会计准则体系包括会计制度吗
  • 表外负债和表内负债对比
  • 契税的计税金额是什么
  • 银行付款退汇怎么做账
  • 其他应付款能转收入么
  • 老板给的钱计入什么科目
  • 打印的电子发票需要盖章么
  • 企业出租自有厂房超经营吗
  • 销项税额转出税额怎么做账?
  • 发票作废了还能认证吗
  • 水利行政事业性收费收入会计分录
  • 固定资产进项税额怎么抵扣
  • 航天信息300元是什么费用
  • 海关专用缴款书怎么认证?
  • 个人使用过的设备有哪些
  • win10玩游戏提示内存不足无法处理此命令
  • 预提费用的会计分录及冲销分录
  • 出口退税怎么申报个税
  • 购货优惠的会计科目
  • 宏基aspire v5-573g怎样加运行内存
  • 华为p50e手机价格及参数
  • mac电脑command+s
  • 税控盘不交服务费的后果
  • 金税盘技术维护费可以抵扣吗
  • uefi和legacy的区别对显卡兼容
  • 主营业务收入明细账
  • mce是什么文件格式
  • 上月抵扣的发票怎么开
  • 印花税需要交钱吗
  • 口腔门诊提供免费服务有哪些?
  • vue 提示
  • 资金平衡表的编制方法
  • thinkphp codeigniter
  • php的foreach遍历原理
  • 建筑行业预交增值税怎么结转
  • 从公账发工资是什么凭证
  • python replace 多个
  • 差额纳税的劳务派遣安保服务征收率
  • 收到税务局退税怎么入账
  • 电商行业退货退款流程
  • 公司用印制度
  • 车保险名称
  • PostgreSQL新手入门教程
  • 房地产企业所得税预缴毛利率
  • 预缴增值税的账务处理
  • 利息收入管理办法
  • ce认证所需的模块有哪些
  • 运费增值税发票抵扣
  • 银行账跨年一直没做怎么补
  • 其他应收款余额在贷方什么意思
  • 增值税专用发票几个点
  • 应收的借方和应付的贷方相等
  • 固定资产折旧方法的选择
  • 企业应付职工薪酬增加说明什么
  • sqlserver索引的作用
  • mysql索引作用的简单理解
  • win2016 ntp
  • WIN7系统如何设置自动关机
  • windows7调制解调器在在哪里打开
  • backtrack5教程
  • java.exe是指
  • win7开机提示音在哪里关闭
  • win8系统无法连接网络
  • opengl中文教程
  • js正则用法
  • html5字体闪烁
  • c#中thread的用法
  • 我决定放弃了你却对我笑了
  • nodejs实战
  • 深入理解新发展理念
  • Qt for Android - ANT_HOME is set incorrectly or ant could not be located
  • 谈心谈话记录由谁填写
  • 征求意见稿 讨论稿 送审稿
  • 怎样查询一个企业是不是一般纳税人
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设