Короткий ответ
Метод __init__() автоматически вызывается при создании объекта класса и инициализирует атрибуты экземпляра начальными значениями. Параметр self — ссылка на сам создаваемый экземпляр, через которую метод сохраняет данные и обращается к другим членам этого объекта.
Как это работает подробнее
Важно понимать, что __init__() не создаёт объект, а лишь настраивает уже выделенный экземпляр.
- Роль конструктора.
__init__()— аналог конструктора из других объектно-ориентированных языков: он срабатывает в момент создания экземпляра и задаёт начальное состояние. - Выделение памяти. Память под объект выделяет метод
__new__(), который вызывается раньше, а__init__()заполняет атрибуты уже готового экземпляра. - Назначение self. Первый параметр любого метода экземпляра — ссылка на конкретный объект; через присваивания вида
self.value = ...каждый экземпляр получает собственные данные. - Имя параметра. Название
self— лишь соглашение: важно, чтобы первым параметром передавался сам экземпляр, а имя может быть любым.
Пример кода
Инициализация атрибутов через __init__
class MyClass:
def __init__(self, value):
self.value = value # сохраняем значение в атрибут объекта
def display(self):
print(f'Value: {self.value}')
obj = MyClass(10)
obj.display() # Value: 10Что использовать на практике
- Инициализация. Все начальные значения атрибутов задавай в
__init__(), а не присваиванием снаружи. - Значения по умолчанию. Если атрибут не всегда нужен, предусматривай значение по умолчанию в сигнатуре конструктора.