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__().