Sobes.tech
Junior — Middle
103

Mi a __new__ metódus célja Pythonban, és miben különbözik az __init__-től?

Válasz az MI-től

sobes.tech MI

Метод __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