Разрешение метода в множественном наследовании в Python
Я пытаюсь понять Порядок разрешения методов в множественном наследовании. Вот код, который я использую. Когда я пытаюсь создать объект класса ClassC, вызывается только конструктор ClassA. Как разрешаются методы в этом случае?
class ClassA:
def __init__(self):
print "inside a's init"
class ClassB:
def __init__(self):
print "inside b's init"
class ClassC(ClassA,ClassB):
pass
c = ClassC()
Выход:
inside a's init
1 ответ
Я полагаю, что есть PEP Python, который подробно описывает алгоритм MRO, но он довольно сложный. Кроме того, это описано в книге Fluent Python. Я считаю, что короткая история такова, что она идет слева направо
если вы переключитесь на
class ClassC(ClassB,ClassA):
pass
Могу поспорить, вы увидите изменения. (обновление, вы обязательно увидите изменения)
Также если вы позвоните
help(c)
Вы должны увидеть распечатанную Mro.