Check

Разница между __init__ и __new__

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