super()

Функция super() возвращает прокси-объект, через который можно обратиться к методам родительского класса. Чаще всего её применяют в __init__ дочернего класса, чтобы корректно инициализировать родителя, и при множественном наследовании — для соблюдения порядка MRO (Method Resolution Order).

Сигнатура

super()
super(type, object_or_type)

Параметры:

  • Без аргументов — работает внутри метода класса и сама подставляет type и self.

  • type — текущий класс.

  • object_or_type — экземпляр или подкласс.

Возвращает: прокси-объект для вызова методов родителя.

Примеры

Вызов __init__ родителя:

class Animal:
    def __init__(self, name):
        self.name = name

class Dog(Animal):
    def __init__(self, name, breed):
        super().__init__(name)
        self.breed = breed

d = Dog("Барс", "лайка")
print(d.name, d.breed)
Барс лайка

Расширение метода родителя:

class Logger:
    def log(self, message):
        print(f"[LOG] {message}")

class TimedLogger(Logger):
    def log(self, message):
        super().log(f"2026-05-15 {message}")

TimedLogger().log("Старт системы")
[LOG] 2026-05-15 Старт системы

Множественное наследование и MRO:

class A:
    def hello(self):
        print("A")

class B(A):
    def hello(self):
        super().hello()
        print("B")

class C(A):
    def hello(self):
        super().hello()
        print("C")

class D(B, C):
    def hello(self):
        super().hello()
        print("D")

D().hello()
A
C
B
D

Использование с явными аргументами:

class Base:
    def greet(self):
        return "Hello"

class Child(Base):
    def greet(self):
        return super(Child, self).greet() + ", world!"

print(Child().greet())
Hello, world!

См. также

Примечание

Описание основано на официальной документации Python (docs.python.org), распространяемой под лицензией PSF License v2. © Python Software Foundation.