MRO 和 C3 线性化算法
Python 中 MRO(Method Resolution Order)是什么?C3 线性化算法如何工作?请举例说明。
回答
小字辈
MRO 是方法解析顺序,Python 使用 C3 线性化算法(Python 2.3+)确定多继承时方法的查找顺序。
规则:
- 子类优先于父类
- 保持基类在继承列表中的顺序
- 满足单调性
class A: pass
class B(A): pass
class C(A): pass
class D(B, C): pass
print(D.__mro__)
# D -> B -> C -> A -> object
super() 遵循 MRO 顺序,不是简单地调用父类方法,而是调用 MRO 中的下一个类。