Множественное наследование в python
У меня есть вот такая система классов
class C:
def __init__(self):
print('c')
class A:
def __init__(self):
print('a')
class B(C):
def __init__(self):
C.__init__(self)
print('b')
class D(B, A):
x = 'X'
Создаю объект:
D()
Получаю к моему большому удивлению:
c
b
Всю жизнь считал, что должно быть так, пока не наткнулся:
c
b
a
Неужли второй класс-родитель нужно руками инициализировать и вызывать его конструктор? Почему так?
Ответы (1 шт):
Автор решения: Xander
→ Ссылка
Когда создаётся объект класса, интерпретатор пробует найти метод __init__ в соответствии с порядком разрешения методов (MRO) продвигаясь по иерархии наследования до тех пор, пока не найдёт первого предка, у которого этот метод определён, и дальше уже искать не будет.