super

Функция super() возвращает объект-посредник для вызова методов родительского класса. Чаще всего используется для переопределения методов в подклассах.

Синтаксис

super([type[, object]])

Аргументы

  • type (необязательный):
    • Что означает: Класс, для которого нужно найти родительский класс.
    • Возможные значения: Класс или None.
  • object (необязательный):
    • Что означает: Объект, связанный с классом.
    • Возможные значения: Экземпляр класса или None.

Возвращаемое значение

Возвращает объект, через который можно вызывать методы родительского класса.

Примеры использования

class Parent:
    def greet(self):
        return "Hello from Parent"

class Child(Parent):
    def greet(self):
        return super().greet() + " and Child"

obj = Child()
print(obj.greet())  # Вывод: "Hello from Parent and Child"

Частые ошибки

  1. Использование super() вне класса:

    print(super())  # Ошибка: RuntimeError
    

    Как исправить: Убедитесь, что super() вызывается в методе класса.

Часто задаваемые вопросы

  1. Можно ли использовать super() в несколько уровней наследования? Да, super() корректно работает в цепочке наследования.