继承顺序
广度优先原则:
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())
继承原理
python到底是如何实现继承的:
- 对于定义的每一个类,python会计算出一个方法解析顺序(MRO)列表,这个MRO列表就是一个简单的所有基类的线性顺序列表。
- 为了实现继承,python会在MRO列表上从左到右开始查找基类,直到找到第一个匹配这个属性的类为止。
- MRO列表的构造是通过一个C3线性化算法来实现的。我们不去深究这个算法的数学原理,它实际上就是合并所有父类的MRO列表并遵循如下三条准则:
- 子类会先于父类被检查。
- 多个父类会根据它们在列表中的顺序被检查。
- 如果对下一个类存在两个合法的选择,选择第一个父类。
原文地址:https://www.cnblogs.com/yan1314/p/9249536.html
时间: 2024-11-05 16:07:08