网站域名续费后SEO查询未更换,做房地产销售的基础知识,杭州小程序公司实力排名,建筑人才网电话在 Python 中#xff0c;当类存在多重继承时#xff0c;方法的调用顺序由 方法解析顺序#xff08;Method Resolution Order, MRO#xff09; 决定。
Python 使用 C3线性化算法 来确定类的继承顺序#xff08;MRO#xff09;#xff0c;其核心规则是#xff1a; 子类优…在 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__ 的顺序。