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