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站:码农高天