Sobes.tech
Junior — Middle
92

¿Puedes explicar qué significa el término MRO en el contexto de la herencia múltiple?

Empresas donde se preguntó
БилайнБилайн

Respuesta de la IA

sobes.tech AI

MRO (Method Resolution Order) — это порядок, в котором Python ищет методы и атрибуты при множественном наследовании классов.

Когда класс наследует несколько родителей, может возникнуть неоднозначность, какой метод вызвать, если он определён в нескольких базовых классах. MRO определяет последовательность обхода этих классов.

В 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

print(D.mro())  # [D, B, C, A, object]

obj = D()
obj.method()  # Выведет 'B', так как B идёт раньше C в MRO

Таким образом, MRO помогает понять, какой метод будет вызван при множественном наследовании.