Назад к вопросам
Аэрофлот
Рунити
СБЕР Роботы
Junior — Middle
66
Чем отличаются методы __new__ и __init__ в процессе создания и инициализации объектов в Python?
Компании, где спрашивали
СБЕР Бизнес
Леста
Ответ от нейросети
sobes.tech AI
Методы __new__ и __init__ в Python отвечают за разные этапы создания объекта:
-
__new__(cls, ...)— это метод класса, который отвечает за создание нового экземпляра. Он вызывается первым и должен вернуть новый объект класса (обычно вызываетсяsuper().__new__(cls)). -
__init__(self, ...)— это метод экземпляра, который отвечает за инициализацию уже созданного объекта. Он вызывается после__new__и настраивает атрибуты объекта.
Пример:
class MyClass:
def __new__(cls, *args, **kwargs):
print("Создаем объект")
instance = super().__new__(cls)
return instance
def __init__(self, value):
print("Инициализируем объект")
self.value = value
obj = MyClass(10)
Вывод будет:
Создаем объект
Инициализируем объект
Таким образом, __new__ отвечает за выделение памяти и создание объекта, а __init__ — за настройку его состояния.