Что делает метод __new__?
Этот вопрос проверяет знание процесса создания объекта в Python и роли метода __new__.
Короткий ответ
Метод __new__ отвечает за создание нового объекта класса. Он вызывается перед __init__ и управляет выделением памяти под объект. Обычно он переопределяется при создании Singleton или других специализированных классов.
Длинный ответ
Метод __new__ — это метод класса, который отвечает за создание экземпляра. Он вызывается автоматически при создании объекта и возвращает этот объект.
Пример работы __new__:
class MyClass:
def __new__(cls, *args, **kwargs):
print("Создание объекта")
return super().__new__(cls) # Выделение памяти
def __init__(self, name):
self.name = name
print("Инициализация объекта")
obj = MyClass("Alice")
# Вывод:
# Создание объекта
# Инициализация объекта
Когда переопределяется:
Для реализации Singleton, где возвращается один и тот же объект:
class Singleton:
_instance = None
def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = super().__new__(cls)
return cls._instance
Особенности:
- __new__ вызывается перед __init__.
- Он управляет выделением памяти, а __init__ — инициализацией.