Что такое Method Resolution Order в Python 2

Python Senior Без компании
Что такое Method Resolution Order в Python 2
Ответы
MRO (Method Resolution Order) в Python 2 определяет порядок поиска методов при множественном наследовании. В Python 2 используется алгоритм **depth-first, left-to-right** для классических классов (без наследования от `object`) и алгоритм **C3 linearization** для новых классов (унаследованных от `object`). Пример с классическим классом (Python 2): ``` class A: def foo(self): print("A") class B(A): pass class C(A): def foo(self): print("C") class D(B, C): pass d = D() d.foo() # Выведет "A" (depth-first поиск) ``` Пример с новым классом: ``` class A(object): def foo(self): print("A") class B(A): pass class C(A): def foo(self): print("C") class D(B, C): pass d = D() d.foo() # Выведет "C" (C3 linearization) ``` C3 алгоритм предотвращает проблемы с ромбовидным наследованием и обеспечивает более предсказуемый порядок. Можно посмотреть MRO через `ClassName.__mro__`.