Можно ли в __new__ отменить создание экземпляра класса

Python Senior Без компании
Можно ли в __new__ отменить создание экземпляра класса
Ответы
Да, можно. В методе `__new__` можно вернуть `None` или другой объект вместо нового экземпляра, тем самым отменив его создание. Однако, если вернуть `None`, Python вызовет `TypeError`. Лучше вернуть экземпляр другого класса или тот же класс с модификациями. Пример: ``` class Singleton: _instance = None def __new__(cls, *args, **kwargs): if cls._instance is None: cls._instance = super().__new__(cls) return cls._instance # всегда возвращаем один и тот же экземпляр ``` Или пример с отменой создания: ``` class NoInstance: def __new__(cls, *args, **kwargs): if some_condition: return super().__new__(cls) return object.__new__(cls) # или другой объект ``` Важно: `__init__` не вызывается, если `__new__` не возвращает экземпляр этого класса.