我想详细说明无生气的答案一点原因是,当我开始阅读关于如何在Python中的多继承层次结构中使用Super()时,我没有立即得到它。

你需要明白的是super(MyClass, self).__init__()提供下一个 __init__方法根据使用的方法分辨率排序(MRO)算法。在完整继承层次结构的上下文中。.

这最后一部分是至关重要的理解。让我们再考虑一下这个例子:class First(object):

def __init__(self):

super(First, self).__init__()

print "first"class Second(object):

def __init__(self):

super(Second, self).__init__()

print "second"class Third(First, Second):

def __init__(self):

super(Third, self).__init__()

print "that's it"

根据本文关于方法解析顺序的讨论吉多·范罗苏姆,“解决问题的命令”__init__使用“深度优先左向右遍历”计算(在Python2.3之前):Third --> First --> object --> Second --> object

除最后一个重复外,删除所有副本后,我们得到:Third --> First --> Second --> object

因此,让我们按照我们实例化Third类,如:x = Third().根据MRO__init__第三名叫第一名。

接下来,根据MRO,在__init__方法super(Third,

self).__init__()解析为__init__方法,该方法将被调用。

内__init__第一次super(First, self).__init__()调用__init__的第二,因为这就是MRO所规定的!

内__init__第二次super(Second, self).__init__()调用__init__没有任何意义。在那之后“第二”印刷.

后super(First, self).__init__()已完成,“第一”印刷.

后super(Third, self).__init__()已完成,“就是这样”是印刷的.

这将详细说明为什么实例化Third()会导致:>>> x = Third()second

first

that's it

MRO算法从Python2.3开始得到改进,在复杂的情况下工作得很好,但是我想,在大多数情况下,使用“深度优先左向右遍历”+“删除重复的预期”在大多数情况下仍然有效(如果不是这样的话)。一定要阅读Guido的博客文章!

pythonsuper多重继承_Python的超级()如何处理多重继承?相关推荐

  1. pythonsuper多重继承_Python多重继承引发的问题——牛逼的super

    少说废话多做事先上一个图,此图用win7下的画图工具所画,当然,这不是重点 需要清楚的一个事情是: 任何类,都默认并隐式的继承object类(根类),在上面的图中,Transformers类同时继承了 ...

  2. java可以多重继承吗_Java中的多重继承与组合vs继承

    java可以多重继承吗 有时我写了几篇有关Java继承,接口和组成的文章. 在这篇文章中,我们将研究多重继承,然后了解组成优于继承的好处. Java中的多重继承 多重继承是创建具有多个超类的单个类的能 ...

  3. pythonsuper多重继承_Python super()函数使用及多重继承

    super()函数可以用于继承父类的方法,语法如下: super(type[, object-or-type]) 虽然super()函数的使用比较简单,但是需要根据单继承和多继承来分析函数的调用关系. ...

  4. pythonsuper多重继承_python多重继承实例 python多重继承下super问题

    python的多重继承问题有些事,有些人,有些风景,一旦入眼入心,即便刹那,也是永恒.当生活心怀歹毒地将一切都搞成了黑色幽默,小编顺水推舟把自己变成了一个受过高等教育的流氓. 楼上的回答的很正确,简单 ...

  5. python多重继承super父类参数_多重继承如何处理super()和不同的参数?

    我正在深入研究一些更高级的python主题(至少对我来说是高级的).我正在阅读有关多重继承和如何使用super()的内容.我或多或少理解超级函数的使用方式,但这样做有什么不对?以下内容:class F ...

  6. 多重继承_Python 和 Java 基础对比 10 —— 类的封装、继承和多态

    @Python大星 一.Python 类的封装.继承和多态 封装 继承 Python 支持多父类的继承机制,所以需要注意圆括号中基类的顺序,若是基类中有相同的方法名,并且在子类使用时未指定,Pytho ...

  7. python多重继承_Python多重继承

    python多重继承 We are going to learn about python multiple inheritance today. Before starting multiple i ...

  8. [转载] python多重继承初始化_关于python多重继承初始化问题

    参考链接: Python多重继承 class A(object): def __init__(self, a): print '__init__ A', str(a) self.A = a class ...

  9. java 多重继承_Java的继承与“多重继承”

    接口只是比抽象类"更纯"的一种形式.它的用途并不止那些.由于接口根本没有具体的实施细节--也就 是说,没有与存储空间与"接口"关联在一起--所以没有任何办法可以 ...

最新文章

  1. 腾讯 angel 3.0:高效处理模型
  2. .NET Core微服务之路:不断更新中的目录 (v0.42)
  3. 一段java并发编程代码
  4. Angular应用里的@Input和@Output注解使用方法介绍
  5. leetcode面试题 04.02. 最小高度树(深度优先搜索)
  6. 论文浅尝 | AAAI2020 - 基于规则的知识图谱组合表征学习
  7. leetcode 31. Next Permutation(字典序的下一个)
  8. WPF 动态添加控件以及样式字典的引用(Style introduction)
  9. 什么是微信二次开发,如何进行微信二次开发?
  10. Excel最强玩法!只用Excel就能做出「王者荣耀」战绩表
  11. python时间序列进行线性插值_精解Python实现线性插值法——一看就会
  12. 开机无法跳过谷歌验证_如何跳过Nexus7第一次开机设置的网络验证
  13. Mac Brew安装及换源教程
  14. w ndows10输入法设置,Win10输入法设置技巧:切换输入法
  15. Android 之 APP上架应用宝平台
  16. 清华大学-中国人民银行金融研究所2023年联合培养博士研究生招生简章
  17. 动态图册用HTML怎么制作,imgplay gif动图制作如何使用?imgplay图文使用教程
  18. excel打开密码忘记了_如何设置EXCEL文件打开和编辑密码
  19. 计算机基础知识---位运算的应用
  20. python快速对比两个excel的数据是否一致

热门文章

  1. 技术能变现,才是硬道理
  2. 从17 个方面对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 等分布式消息队列
  3. JeecgBoot轻松解决ERP项目复杂布局需求,JVXETable高性能行表格效果和项目案例
  4. 小程序开发入门基础篇-张代浩-专题视频课程
  5. SAP常用T-Code
  6. Linux系统:centos7下搭建Rocketmq4.3中间件,和监控台
  7. 神经网络优化算法总结【SGD】---【Adam】
  8. 数据结构拾遗(2) --红黑树的设计与实现(中)
  9. 数据仓库之电商数仓-- 3.3、电商数据仓库系统(DWT层)
  10. Django(一)预热