主页 > 开源代码  > 

python:多重继承、MRO(方法解析顺序)

python:多重继承、MRO(方法解析顺序)

在 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__ 的顺序。

标签:

python:多重继承、MRO(方法解析顺序)由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“python:多重继承、MRO(方法解析顺序)