new создаёт и возвращает экземпляр, а init инициализирует уже созданный объект и должен вернуть None. Для обычных классов чаще достаточно переопределить init.
Что такое магический метод __new__ и магический метод __init__ и в чём их отличие?
__new__ создаёт и возвращает экземпляр, а __init__ инициализирует уже созданный объект и должен вернуть None. Для обычных классов чаще достаточно переопределить __init__.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
new создаёт и возвращает экземпляр, а init инициализирует уже созданный объект и должен вернуть None. Для обычных классов чаще достаточно переопределить init.
new получает cls и важен, например, при наследовании неизменяемых типов. Если он возвращает экземпляр соответствующего класса, вызывается инициализация; возврат постороннего объекта меняет обычный сценарий. Ресурсы лучше явно управлять контекстным менеджером, а не путать создание экземпляра с гарантированным освобождением.