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