Я просто играю в Python MRO и обнаружил что-то странное для множественного наследования. Код:
class A():
def __init__(self):
print('enter A')
print('leave A')
class B(A):
def __init__(self):
print('enter B')
super().__init__()
print('leave B')
class C():
def __init__(self):
print('enter C')
super().__init__()
print('leave C')
class D(B, C):
def __init__(self):
print('enter D')
super().__init__()
print('leave D')
print(D.__mro__)
d = D()
Результат:
(<class '__main__.D'>, <class '__main__.B'>, <class '__main__.A'>, <class '__main__.C'>, <class 'object'>)
enter D
enter B
enter A
leave A
leave B
leave D
Был вызван класс C, почему не было напечатано "enter C"?