Разрешение метода в множественном наследовании в 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.

Другие вопросы по тегам