Sobes.tech
Назад к вопросам
Junior — Middle
72

В чем заключается назначение метода __new__ в Python и чем он отличается от __init__?

Ответ от нейросети

sobes.tech AI

Метод __new__ в Python отвечает за создание нового экземпляра класса — он вызывается до __init__ и возвращает сам объект. Это статический метод, который принимает класс в качестве первого аргумента и должен вернуть объект этого класса (или подкласса).

Метод __init__ вызывается после __new__ и инициализирует уже созданный объект, устанавливая его атрибуты.

Основное отличие:

  • __new__ создает и возвращает объект;
  • __init__ настраивает (инициализирует) уже созданный объект.

Пример:

class MyClass:
    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 = MyClass(10)

Вывод:

__new__ called
__init__ called