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

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы