Back to questions
Junior — Middle
55
Какую часть Python отвечает за выполнение методов __new__, __call__, __init__ и в чем их назначение?
Companies where asked
ООО Цитадель
Answer from AI
sobes.tech AI
В Python методы __new__, __init__ и __call__ связаны с жизненным циклом объектов и поведением классов.
-
__new__(cls, ...)— статический метод, который отвечает за создание нового экземпляра класса. Он вызывается перед__init__и должен возвращать новый объект. -
__init__(self, ...)— инициализатор, который настраивает уже созданный объект (например, задаёт значения атрибутов). -
__call__(self, ...)— позволяет сделать экземпляр класса вызываемым как функцию. При вызове объекта с круглыми скобками вызывается этот метод.
Пример:
class MyClass:
def __new__(cls, *args, **kwargs):
print("Создаётся объект")
return super().__new__(cls)
def __init__(self, value):
print("Инициализация объекта")
self.value = value
def __call__(self, x):
print(f"Вызов объекта с аргументом {x}")
return self.value + x
obj = MyClass(10) # Создаётся объект
# Инициализация объекта
result = obj(5) # Вызов объекта с аргументом 5
print(result) # 15
Таким образом, __new__ создаёт объект, __init__ его настраивает, а __call__ позволяет использовать объект как функцию.