Встречается на собеседованиях • сегодня
В чем разница между __new__ и __init__
__new__ и __init__ — это методы создания объекта в Python, но они выполняют разные задачи:
-
__new__— статический метод (хотя и не требует декоратора@staticmethod), который создает и возвращает новый экземпляр класса. Он вызывается перед__init__и может вернуть объект другого класса (например, при реализации паттерна Singleton). -
__init__— метод инициализации, который вызывается после__new__и настраивает созданный объект (например, устанавливает атрибуты). Он ничего не возвращает.
Пример:
python
class Example:
def __new__(cls, *args, **kwargs):
print("__new__ called")
instance = super().__new__(cls) # Создаем экземпляр
return instance
def __init__(self, value):
print("__init__ called")
self.value = value
obj = Example(10)Вывод:
text
__new__ called
__init__ called
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы