Что такое __init__ в Python?

«Что такое __init__ в Python?» — вопрос из категории Python, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Метод __init__ — это инициализатор экземпляра класса в Python. Он автоматически вызывается после создания нового объекта (после вызова метода __new__) и предназначен для установки начального состояния объекта.

Ключевые моменты:

  • Не конструктор: Конструктором, создающим объект, является метод __new__. __init__ лишь инициализирует уже созданный объект.
  • Первый параметр self: Ссылка на создаваемый экземпляр.
  • Может принимать любые аргументы для настройки объекта.

Пример:

class DatabaseConnection:
    def __init__(self, host, port, user, password):
        # Инициализация атрибутов экземпляра
        self.host = host
        self.port = port
        self.user = user
        self._password = password  # "Защищенный" атрибут
        self.is_connected = False

    def connect(self):
        # Используем атрибуты, установленные в __init__
        print(f"Connecting to {self.user}@{self.host}:{self.port}")
        # ... логика подключения
        self.is_connected = True

# Создание и инициализация объекта
conn = DatabaseConnection("localhost", 5432, "admin", "secret")
print(conn.host)  # localhost
print(conn.is_connected)  # False
conn.connect()
print(conn.is_connected)  # True

Почему это важно: __init__ — это стандартный и ожидаемый способ задания начальных, обязательных для работы объекта данных, что делает код понятным и предсказуемым.