Junior — Middle
89
Jaký je účel metody __new__ v Pythonu a čím se liší od __init__?
Odpověď od AI
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