Назад к вопросам
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].