Возвращает объект-посредник (прокси), делегирующий вызовы методов родителю или собрату класса указанного типа.
Прототип
super([type[, object-or-type]])
Параметры
type -- Тип, от которого следует начать поиск объекта-посредника. -py3.0 Ранее атрибут был обязателен.

obj-or-type -- Если не указан, возвращается несвязанный объект-посредник. Если атрибут является объектом, то будет получен посредник для получения метода объекта, для которого isinstance(obj, type) возвращает True. Если атрибут является типом, то будет получен посредник для получения метод класса, для которого issubclass(subtype, type) возвращает True.
Описание
Используется для доступа к базовым реализациям наследуемых методов, перекрытых в классе-наследнике.

Порядок поиска метода тот же, что и при getattr(), только type пропускается: тип имеет атрибут __mro__, в котором задаётся порядок поиска методов, используемый как getattr(), так и super(). Атрибут динамический и может изменяться по мере обновления иерархии наследования.

Типичные случаи использования super()

1. В иерархиях с единичным наследованием используется для обращения к родительским классам, чтобы явно не указывать их имена, это упрощает поддержку кода в дальнейшем. Данный тип использования имеет родственников в других языках программирования.

2. Второй вариант используется для поддержки совместного множественного наследования в динамическом окружении. Вариант уникален для Питона и отсутствует в языках статически компилируемых или поддерживающих только единичное наследование. Он делает возможным обращение с ромбовидными иерархиями (см. проблема ромба), при которых несколько базовых классов задают реализацию метода с одним и тем же именем. Правила хорошего проектирования требуют того, чтобы во всех случаях метод имел одну и ту же сигнатуру (в связи с тем, что порядок вызовов определяется во время исполнения, потому как он задаётся при изменении иерархии, и потому что в цепи могут присутствовать собратья, неизвестные до момента исполнения).

    class C(B):
def method(self, arg):
# Python 3
super().method(arg)
# То же, что и для Python 2
super(C, self).method(arg)

На заметку
Функция реализована как часть процесса связывания в случаях явных разрешений атрибута через точку, таких как super().__getitem__(name). Делается это посредством реализации собственного __getattribute__(), используемого для поиска классов в предсказуемом порядке, принимающем во внимание совместное множественное наследование. Поэтому super() не поддерживает косвенное разрешение с использованием инструкций или операторов, например super()[name].

Заметьте, что использовать функцию с двумя аргументами можно не только в методах.

Без аргументов функция работает только внутри определения класса: необходимые для идентификации класса и доступа к методам его объекта детали заполняет компилятор.

Примечание для Python 2
Функция работает только с классами нового стиля (явно наследующимися от object).

Видео по теме: Реймонд Хеттинджер. «Super — это супер!».
Синонимы поиска: супер

Нет обсуждений для отображения.
Если у вас есть, что сказать, можете представиться и исправить ситуацию.