具体解析:https://hanjianwei.com/2013/07/25/python-mro/ 实战:https://blog.csdn.net/wo198711203217/article/details/84097274

简介

  1. Python 3中的类以及Python 2中的新式类使用C3算法来确定MRO,它是一种类似于广度优先搜索的方法
  2. Python 2中的旧式类(经典类)使用深度优先搜索来确定MRO。
  3. 在搞不清楚MRO的情况下,可以使用类的**mro**方法或__mro__属性来获得类的MRO列表。

补充知识:广度优先和深度优先

深度优先
image.png
广度优先

image.png

案例

  1. class A:
  2. def method(self):
  3. print("CommonA")
  4. class B(A):
  5. pass
  6. class C(A):
  7. def method(self):
  8. print("CommonC")
  9. class D(B, C):
  10. pass
  11. print(D().method())

分析上述类 B 的 MRO

首先画出继承图
image.png
利用广度优先:[B,A,object]