Back to Blog

🧩 Когда использовать super() и dunder methods в Python

Anastasiia Berest 2 min read

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

Anastasiia Berest

Senior Web UI Engineer

I'm a web development passionate about creating meaningful digital experiences.