Junior — Middle
69
Можете объяснить, что означает термин MRO в контексте множественного наследования?
Companies where asked
Answer from AI
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 помогает понять, какой метод будет вызван при множественном наследовании.