如题
class Base:
def __init__(self):
print('Base.__init__')
class A(Base):
def __init__(self):
super().__init__()
print('A.__init__')
def xx(self):
print('axx')
class B(Base):
def __init__(self):
super().__init__()
print('B.__init__')
def xx(self):
print('bxx')
class C(Base):
def __init__(self):
super(C,self).__init__()
print('C.__init__')
class D(A, B, C):
def __init__(self):
super(D,self).__init__()
print('D.__init__')
d = D()
d.xx()
print(D.mro())
打印出来的结果如下:
Base.__init__
C.__init__
B.__init__
A.__init__
D.__init__
axx
[<class '__main__.D'>, <class '__main__.A'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.Base'>, <class 'object'>]
为什么init的调用顺序是C,B,A? 这个和MRO函数中体现的顺序不一样??