Skip to content

Init

Определение#

__init__ — магический метод, который инициализирует атрибуты для нового экземпляра класса.

Зачем он нужен#

Метод __init__ автоматически вызывается при создании объекта и настраивает его начальное состояние: задаёт значения атрибутов, подготавливает данные для работы. Без него объект создаётся пустым.

Как это работает#

При my_object = MyClass(), Python сначала создаёт экземпляр класса MyClass, а затем автоматически вызывает метод __init__, передавая в него все аргументы, которые были указаны в скобках.
Внутри __init__ настраиваются атрибуты объекта — те данные, которые будут в нём хранится.​

Этот метод часто называют конструктором, хотя технически в Python он является именно инициализатором (созданием занимается метод __new__, но на практике его меняют редко).​​

Парамаметр self#

Первый параметр __init__ всегда называется self — это ссылка на сам создаваемый объект. Через self объекту присваиваеваются его значения:​​

    class Character:
        def __init__(self, name, level=1):
            # self.name — атрибут объекта
            # name — аргумент, переданный при создании
            self.name = name
            self.level = level
            self.inventory = [] # Начальное состояние может быть фиксированным

    # Создание объекта (вызов __init__)
    hero = Character("Aragorn", 10)
    print(hero.name) # Aragorn

Главные особенности#

  • __init__ не возвращает значение (технически возвращает None) — его задача только настроить объект.​
  • Два подчёркивания с обеих сторон __init__ — это признак магического метода (dunder method), у которого есть специальное поведение в языке.
  • Наследование: Если создаётся дочерний класс и в нём описывается свой __init__, он «перекроет» родительский. Чтобы выполнить начальную настройку родителя, нужно использовать super().__init__().​​

Теги#