Шаг 1 из 3+130 XP
super() — вызов родителя
Расширь поведение, не теряя базы.
super() — позвать родителя
Что это
super() — это «ссылка на родителя». Когда ребёнок переопределяет метод, но всё равно хочет, чтобы сначала отработал родительский код, он зовёт его через super().метод(...).
Как это читать
class Vehicle:
def __init__(self, w):
self.wheels = w
class Car(Vehicle):
def __init__(self, w, hp):
super().__init__(w) # отдаём w в Vehicle.__init__
self.hp = hp # потом доустанавливаем своё
- super().__init__(w) зовёт Vehicle.__init__(self, w) — он сохранит self.wheels.
- Только после этого Car добавляет своё поле hp.
- Если забыть super().__init__(w) — поле wheels просто не появится.
Пример
class Person:
def __init__(self, name):
self.name = name
class Student(Person):
def __init__(self, name, school):
super().__init__(name)
self.school = school
s = Student("Ann", "Lyceum")
print(s.name, s.school) # Ann Lyceum
👍 Зови super().__init__(...) первой строкой в дочернем __init__ — это привычная и безопасная схема.
👎 Не пиши Vehicle.__init__(self, w) напрямую: super() корректнее работает в цепочках наследования и не сломается, если ты переименуешь родителя.