Встречается на 1% собеседований по Python

Как разрешаются конфликты имен при множественном наследовании в Python

В Python конфликты имен при множественном наследовании разрешаются с помощью алгоритма C3 Linearization (Method Resolution Order - MRO). Порядок определяется слева направо и глубину вверх (по принципу "первый подходящий").

python
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

d = D()
d.method() # Выведет "B" - первый родитель в списке наследования

text

MRO можно посмотреть через `ClassName.__mro__`:
```python
print(D.__mro__)  # (<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>)

Если возникает неразрешимый конфликт (например, diamond-проблема с разными порядками), Python выдаст ошибку TypeError: Cannot create a consistent method resolution order.

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

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

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

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