Что делает метод __new__ и чем он отличается от __init__?
Уровень: Senior
Ответ
__new__ – это статический метод (обычно наследуется от object), который отвечает за создание нового экземпляра класса. Он вызывается перед __init__ и должен возвращать новый объект класса. __init__ же инициализирует уже созданный экземпляр (присваивает атрибуты). Практически, __new__ редко переопределяют – главным образом при наследовании неизменяемых типов (например, унаследоваться от tuple) или для реализации паттерна Singleton (контроля создания объекта).