Что такое магический метод __new__ и магический метод __init__ и в чём их отличие?

__new__ создаёт и возвращает экземпляр, а __init__ инициализирует уже созданный объект и должен вернуть None. Для обычных классов чаще достаточно переопределить __init__.

Короткий ответ

Что ответить на собеседовании

new создаёт и возвращает экземпляр, а init инициализирует уже созданный объект и должен вернуть None. Для обычных классов чаще достаточно переопределить init.

Подробный разбор

Ответ с пояснениями

new создаёт и возвращает экземпляр, а init инициализирует уже созданный объект и должен вернуть None. Для обычных классов чаще достаточно переопределить init.

new получает cls и важен, например, при наследовании неизменяемых типов. Если он возвращает экземпляр соответствующего класса, вызывается инициализация; возврат постороннего объекта меняет обычный сценарий. Ресурсы лучше явно управлять контекстным менеджером, а не путать создание экземпляра с гарантированным освобождением.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее