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.