引言
多继承是指子类拥有多个父类,并具备它们的特征。在实际程序执行过程中,Python 需要确定调用哪个父类的方法。
例如,如果将马和驴视为父类,骡子作为子类同时继承了它们的特征。在 Python 中,这种继承关系通过方法解析顺序(MRO)来管理。

实际的程序执行顺序遵循以下规则:
- 如果自身有定义,优先使用自身。
- 如果自身没有,则按 MRO 顺序查找父类。
- 依次向上追溯祖先类,直到找到匹配的方法。
代码示例
class A:
def test(self):
print('test A')
class B(A):
def test(self):
print('test B')
class C(A):
def test(self):
print('test C')
class D(B, C):
def test(self):
print('test D')
d = D()
d.test()
运行上述代码,输出结果为 test D,因为子类 D 自身定义了该方法。
若移除 D 中的 test 方法,Python 将按照 MRO 列表顺序查找。D 的 MRO 顺序为 D -> B -> C -> A -> object。因此会先调用 B 的方法。

如果 B 和 C 都没有定义该方法,则会继续向上查找 A。


