Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗pyOpMiSp 148 of 174 menu
◀ ▶

Вызов метода родителя при множественном наследовании в ООП в Python

При множественном наследовании в потомке часто нужно вызвать реализацию метода из одного из родителей. Для этого используют super().

Важный момент: super() идет не «в один жестко заданный класс», а по цепочке __mro__. Следующим после текущего класса в этой цепочке будет тот родитель, чей код выполнится при вызове super().method().

Давайте посмотрим на примере. Пусть есть общий предок и два промежуточных класса:

class Root: def show(self): return 'root' class Left(Root): def show(self): return 'left-' + super().show() class Right(Root): def show(self): return 'right-' + super().show() class Child(Left, Right): def show(self): return 'child-' + super().show()

Создадим объект и вызовем метод:

obj = Child() print(obj.show())

Цепочка super() пройдет по Child.__mro__: сначала метод Left, затем Right, затем Root. Именно поэтому порядок родителей в скобках важен не только при конфликте имен, но и при совместной работе через super().

print(Child.__mro__)
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить