Зачем нужен метод __init__?

«Зачем нужен метод __init__?» — вопрос из категории ООП, который задают на 33% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Основные цели:

  1. Присвоение атрибутов экземпляра: Принять аргументы и сохранить их как поля объекта.
  2. Гарантия валидного состояния: Убедиться, что объект создается с корректными данными.
  3. Выполнение стартовой логики: Например, установка соединения или загрузка конфигурации.

Пример на Python:

class DatabaseConnection:
    def __init__(self, host: str, port: int, user: str):
        # Инициализация атрибутов экземпляра
        self.host = host
        self.port = port
        self.user = user
        self._is_connected = False  # Внутреннее состояние

        # Стартовая логика: валидация
        if port <= 0:
            raise ValueError("Port must be a positive number")

# Создание экземпляра
conn = DatabaseConnection("localhost", 5432, "admin")
print(conn.host)  # Вывод: localhost

Без __init__ пришлось бы отдельно вызывать метод настройки после создания, что повышает риск ошибок.