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

Можно ли вызвать метод класса, который не определен по MRO в Python

Да, можно, но только если метод явно вызван через экземпляр другого класса или через super() с указанием нужного класса. В обычном случае Python ищет метод по MRO (Method Resolution Order), и если его нет, вызовет AttributeError.

Пример:

python
class A:
    def method(self):
        print("A.method")

class B:
    def method(self):
        print("B.method")

class C(A, B):
    pass

c = C()
c.method()  # Выведет "A.method" (по MRO)
B.method(c)  # Вызов метода B, несмотря на MRO

Также можно использовать super() с явным указанием класса:

python
super(A, c).method()  # Вызовет B.method, пропуская A

Но просто c.method() без явного указания класса будет следовать MRO.

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

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

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

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