码迷,mamicode.com
首页 > 编程语言 > 详细

Python新式类继承顺序

时间:2018-07-01 11:55:27      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:pre   pen   简单   hid   info   inf   bubuko   技术   优先   

继承顺序

广度优先原则:

技术分享图片

 

技术分享图片
class A:
    pass


class B(A):
    pass

class C(A):
     pass


class D(B):
    pass

class E(C):
    pass

class F(D, E):
    pass


print("F.__mro__ = ", F.__mro__)
print("F.mro() = ", F.mro())
View Code

 

 

 

继承原理

 python到底是如何实现继承的:

  • 对于定义的每一个类,python会计算出一个方法解析顺序(MRO)列表,这个MRO列表就是一个简单的所有基类的线性顺序列表。
  • 为了实现继承,python会在MRO列表上从左到右开始查找基类,直到找到第一个匹配这个属性的类为止。
  • MRO列表的构造是通过一个C3线性化算法来实现的。我们不去深究这个算法的数学原理,它实际上就是合并所有父类的MRO列表并遵循如下三条准则:
  1. 子类会先于父类被检查。
  2. 多个父类会根据它们在列表中的顺序被检查。
  3. 如果对下一个类存在两个合法的选择,选择第一个父类。

技术分享图片

 

Python新式类继承顺序

标签:pre   pen   简单   hid   info   inf   bubuko   技术   优先   

原文地址:https://www.cnblogs.com/yan1314/p/9249536.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!