Sobes.tech
Назад к вопросам
Middle+
5

Что такое MRO (Method Resolution Order)?

Компании, где спрашивали
Литрес

Ответ от нейросети

sobes.tech AI

MRO (Method Resolution Order) — это порядок, в котором Python ищет методы и атрибуты в иерархии классов при наследовании, особенно при множественном наследовании. В Python используется алгоритм C3-линеаризации, который гарантирует, что поиск происходит последовательно и предсказуемо, избегая неоднозначностей.

Пример:

class A:
    def method(self):
        print("A")

class B(A):
    def method(self):
        print("B")

class C(A):
    def method(self):
        print("C")

class D(B, C):
    pass

obj = D()
obj.method()  # Выведет "B"
print(D.mro())  # Покажет порядок поиска методов

Здесь метод вызывается из класса B, так как MRO для D — [D, B, C, A, object].