Встречается на собеседованиях • сегодня

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

MRO (Method Resolution Order) в Python 2 определяет порядок поиска методов при множественном наследовании. В Python 2 используется алгоритм depth-first, left-to-right для классических классов (без наследования от object) и алгоритм C3 linearization для новых классов (унаследованных от object).

Пример с классическим классом (Python 2):

python
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 поиск)

Пример с новым классом:

python
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__.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы