, поэтому я занимаюсь изучением чудесного мира Python 2.7 Множественное наследование и MRO, и я пробовал разные примеры во время чтения, и я наткнулся на что-то, что действительно меня озадачило.Python 2.7 MRO ведет себя странно
Итак, вы получили свой классические бриллиантовое MI пример:
class A:
def __init__(self):
print "A"
class B(A):
pass
class C(A):
def __init__(self):
print "C"
class D(B, C):
pass
instance = D()
Во все MRO ресурсов, которые я прочитал, этот пример должен иметь МРО DBCA так инициализация D должна напечатать «C», но вместо того, чтобы его печатает "A". Странно, однако, когда я изменяю определение A, B, C или D как подкласс чего-то вроде int
, он дает мне ожидаемое поведение печати «C»
Почему структура MRO структуры класса выглядит по-разному в зависимости от того, базовый класс - примитивный тип? это ошибка?