Check
Чем отличаются методы __init__ и __new__ в классе Python? В каких случаях имеет смысл переопределять __new__?

__new__ vs __init__

Ответ 1 / 1

__new__(cls, ...) — статический/классовый метод, который создаёт объект (вызывает выделение памяти) и возвращает инстанс. __init__(self, ...) — инициализирует уже созданный объект. Последовательность: 1) вызывается Class.__new__ 2) возвращается объект 3) вызывается __init__ для этого объекта __new__ переопределяют, когда: - нужно контролировать создание объектов (паттерн Singleton) - создаём экземпляр другого класса - работаем с неизменяемыми типами (например, наследуемся от tuple).