Python Schoolby trefilov
Шаг 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() корректнее работает в цепочках наследования и не сломается, если ты переименуешь родителя.