Junior — Middle
92
Quelle est la différence entre les méthodes __new__ et __init____ dans le processus de création et d'initialisation des objets en Python?
Entreprises à qui on a demandé
СБЕР Бизнес
Леста
Réponse de l'IA
sobes.tech IA
Методы __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__ — за настройку его состояния.