保障房建设网站首页网站备案为什么要关闭
在 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
A
 
class 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__的顺序。 
