super() нужен, когда ты работаешь с наследованием и хочешь:
👉 вызвать метод родительского класса
📌** Когда применять:** переопределяешь метод но хочешь сохранить поведение родителя
class Animal:
def __init__(self, name):
self.name = name
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name) # вызываем родителя
self.breed = breed
💡 Без super() пришлось бы писать:
Animal.__init__(self, name)
Но super():
- безопаснее
- работает корректно при множественном наследовании
🧠 Когда точно нужен super():
- в __init__
- при переопределении методов
- при наследовании вообще
⚙️ Что значит __smth__ (двойные подчёркивания)
Это специальные методы (dunder methods).
👉 Они делают объекты “умными”
| Метод | Что делает |
|---|---|
| __init__ | конструктор |
| __str__ | как выводится объект |
| __len__ | длина (len(obj)) |
| __add__ | сложение (obj1 + obj2) |
✅ Пример:
class Book:
def __init__(self, title):
self.title = title
def __str__(self):
return self.title
b = Book("Python")
print(b) # Python
| Что это | Когда использовать |
|---|---|
| super() | когда работаешь с наследованием |
| __init__, __str__ и т.д. | когда настраиваешь поведение объекта |
🧠 Простое правило:
👨👦 super() → “возьми что-то у родителя”
⚙️ __smth__ → “настрой, как ведёт себя объект”
🔥 Мини-пример вместе:
class Animal:
def __init__(self, name):
self.name = name
def __str__(self):
return f"Animal: {self.name}"
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name)
self.breed = breed
Anastasiia Berest
Senior Web UI Engineer
I'm a web development passionate about creating meaningful digital experiences.