具体解析:https://hanjianwei.com/2013/07/25/python-mro/ 实战:https://blog.csdn.net/wo198711203217/article/details/84097274
简介
- Python 3中的类以及Python 2中的新式类使用C3算法来确定MRO,它是一种类似于广度优先搜索的方法
- Python 2中的旧式类(经典类)使用深度优先搜索来确定MRO。
- 在搞不清楚MRO的情况下,可以使用类的
**mro**
方法或__mro__属性
来获得类的MRO列表。
补充知识:广度优先和深度优先
深度优先
广度优先
案例
class A:
def method(self):
print("CommonA")
class B(A):
pass
class C(A):
def method(self):
print("CommonC")
class D(B, C):
pass
print(D().method())
分析上述类 B 的 MRO
首先画出继承图
利用广度优先:[B,A,object]