mro与多继承循序
mro :方法解析顺序
情形1:
class A:
def say(self):
print(a)
class B:
def say(self):
print(b)
class M(A,B):
pass
m = M()
m.say()
# 打印 a
情形2:
class A:
def say(self):
print(a)
class B:
def say(self):
print(b)
class C(A):
pass
class M(C,B):
pass
m = M()
print(M.mro())
# print(M.__mro__)
m.say()
打印 a
mro的顺序是MCAB
类关系图:

情形3:
class A:
def say(self):
print(a)
class B(A):
def say(self):
print(b)
class C(A):
pass
class M(C,B):
pass
m = M()
print(M.mro())
# print(M.__mro__)
m.say()
#
打印 b
mro的顺序是MCBA

例子4:
class A:
def say(self):
print("a")
class B:
def say(self):
print('b')
class C(A):
pass
class D(C,B):
pass
class M(D):
pass
m = M()
print(M.mro())
#结果:
[<class '__main__.M'>, <class '__main__.D'>, <class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>]
学习过程:B站:码农高天
本文探讨了Python中mro(Method Resolution Order)在类A、B、C和M多继承场景中的应用,通过实例解析mro顺序对方法调用的影响,并展示了如何根据类关系图理解不同继承情况下的结果。
1095

被折叠的 条评论
为什么被折叠?



