В чём разница между __init__ и __new__?

Senior
246 просмотров
AFK Offer AI

__new__ — статический метод, который создаёт экземпляр объекта (аллокация памяти). __init__ — инициализирует уже созданный экземпляр (заполняет атрибуты). Порядок: сначала __new__ возвращает объект, потом __init__ его настраивает. Обычно переопределяют только __init__. __new__ нужен для immutable типов (int, str, tuple) — там нельзя менять объект в __init__, только создать нужный в __new__. Ещё __new__ используется для паттерна Singleton и кастомных метаклассов.

Следующий вопрос

Реализуйте очередь на двух стеках