Что такое MRO (Method Resolution Order) в Python? Как класс ищет метод при множественном наследовании?
Pythonhardsenior
Варианты ответа
MRO — линеаризация дерева наследования через C3-алгоритм. Метод ищется снизу вверх по __mro__ списку: instance → class → parents в порядке MRO. super() использует MRO для следующего класса
MRO работает как DFS обход родителей слева направо. При конфликте методов всегда побеждает первый в списке наследования. super() игнорирует MRO и идёт к прямому родителю
MRO в Python это всегда linear chain — единственный родитель плюс object. Множественное наследование запрещено для предотвращения diamond problem, super() вызывает __init__ родителя
MRO определяется хэшем имени класса при создании — порядок методов меняется случайно при каждом запуске Python. Для детерминированного порядка нужно использовать type() явно
Разбор ответа
Подробный разбор с объяснением «почему правильный ответ верный» и почему остальные неверны — после регистрации.
2475 вопросов с разбором, quiz-режим с проверкой, AI-собес и подготовка к интервью аналитика.