Ответ
Метод __init__ в Python — это специальный метод (dunder-метод), который является инициализатором экземпляра класса. Он автоматически вызывается сразу после создания объекта (за которое отвечает метод __new__).
Основная задача __init__ — задать начальное состояние объекта, то есть присвоить значения его атрибутам.
Ключевые функции:
- Инициализация атрибутов: Присваивает начальные значения полям объекта (
self.имя_атрибута = значение). - Прием аргументов: Позволяет передавать данные при создании объекта, делая его гибким и готовым к работе.
- Выполнение начальной логики: Может содержать любые действия, которые необходимо выполнить при создании объекта (например, подключение к базе данных, открытие файла).
Пример:
class DatabaseConnector:
# Метод-инициализатор
def __init__(self, host, port, username, password):
"""Инициализирует объект, принимая параметры для подключения."""
print(f"Initializing connection to {host}:{port}...")
# 1. Инициализация атрибутов на основе переданных аргументов
self.host = host
self.port = port
self.username = username
self.password = password
# 2. Установка атрибута со значением по умолчанию
self.is_connected = False
# 3. Выполнение начальной логики
self.connect()
def connect(self):
# (здесь могла бы быть логика реального подключения)
print(f"Successfully connected as '{self.username}'!")
self.is_connected = True
# Создание экземпляра класса. В этот момент автоматически вызывается __init__
db_connection = DatabaseConnector("localhost", 5432, "admin", "secret_pass")
# Атрибуты объекта уже установлены
print(f"Connection status: {db_connection.is_connected}")
# Вывод:
# Initializing connection to localhost:5432...
# Successfully connected as 'admin'!
# Connection status: True
Без __init__ пришлось бы вручную присваивать значения атрибутам после создания пустого объекта, что неудобно, ведет к ошибкам и нарушает принцип инкапсуляции.