super
Даёт доступ к методам родительского класса из метода дочернего класса.
Python 3.13
super()
super(type[, object_or_type])Параметры
- typetypeнеобязательный
- Класс, после которого начинается поиск метода; внутри метода, объявленного в классе, его можно не указывать.
- object_or_typeAnyнеобязательный
- Объект или класс, для которого вызывается метод; внутри метода подставляется сам.
Возвращаемое значение
Объект-посредник, через который вызываются методы родительского класса.
Примеры
Вызов родительского __init__
Python 3.13
class Animal:
def __init__(self, name):
self.name = name
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name)
self.breed = breed
dog = Dog('Rex', 'beagle')
print(dog.name, dog.breed)Rex beagle
Дополнение метода родителя
Python 3.13
class Greeter:
def greet(self):
return 'Hello'
class LoudGreeter(Greeter):
def greet(self):
return super().greet().upper() + '!'
print(LoudGreeter().greet())HELLO!
Подробности
Без аргументов super() работает только внутри метода, объявленного в классе: Python сам подставляет текущий класс и self. Если в дочернем __init__ не вызвать super().__init__(...), атрибуты, которые задаёт родитель, не появятся. При множественном наследовании super() идёт по порядку поиска методов (MRO), а не обязательно к прямому родителю.
