Junior — Middle
71
Python-ның қай бөлігі __new__, __call__, __init__ әдістерін орындауға жауап береді және олардың мақсаты қандай?
Сұралған компаниялар
ООО Цитадель
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__ позволяет использовать объект как функцию.