Встречается на собеседованиях • сегодня

Как реализован поиск классов в множественном наследовании в Python

Python использует алгоритм C3 linearization для определения порядка разрешения методов (MRO) при множественном наследовании. 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" (MRO: D → B → C → A)

text

Ключевые моменты:  
1. Порядок наследования важен: `class D(B, C)` означает, что сначала ищется в `B`, затем в `C`.  
2. MRO можно посмотреть через `D.__mro__` или `D.mro()`.  
3. C3 гарантирует, что:  
   - Подклассы идут перед родительскими.  
   - Порядок объявления классов сохраняется.  
   - Нет конфликтов в иерархии (иначе `TypeError`).
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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