python:多重继承、MRO(方法解析顺序)
- 开源代码
- 2025-08-22 18:51:01

在 Python 中,当类存在多重继承时,方法的调用顺序由 方法解析顺序(Method Resolution Order, MRO) 决定。
Python 使用 C3线性化算法 来确定类的继承顺序(MRO),其核心规则是:
子类优先于父类
左侧父类优先于右侧父类(按继承顺序从左到右)
同一父类不会被重复查找
可以通过 类名.__mro__ 或 类名.mro() 查看继承顺序:
class A: def say(self): print("A") class B: def say(self): print("B") class C(A, B): print("C") c = C() c.say() 输出 C Aclass A: def say(self): print("A") class B: def say(self): print("B") class C(A, B): print("C1") def say(self): print("C2") c = C() c.say() 输出 C1 C2 super()用法 class A: def action(self): print("A") class B(A): def action(self): super().action() print("B") class C(A): def action(self): super().action() print("C") class D(B, C): def action(self): super().action() print("D") d = D() d.action()
输出: A C B D
关键:
super() 的链式调用super() 的调用顺序 不是由类的定义决定的,而是由实例的 MRO 决定的。
在 D 的实例 d 中,super() 的调用链始终遵循 D.__mro__ 的顺序。
python:多重继承、MRO(方法解析顺序)由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“python:多重继承、MRO(方法解析顺序)”