Какой компонент языка вызывает магические методы __new__, __call__, __init__ в Python
Python
Middle
Без компании
Какой компонент языка вызывает магические методы __new__, __call__, __init__ в Python
Ответы
В Python эти методы вызываются автоматически при создании и инициализации объекта.
- `__new__` вызывается первым для создания экземпляра (возвращает новый объект).
- `__init__` вызывается после `__new__` для инициализации объекта.
- `__call__` вызывается, когда экземпляр класса используется как функция.
Пример:
```
class Example:
def __new__(cls, *args, **kwargs):
print("__new__ called")
return super().__new__(cls)
def __init__(self, value):
print("__init__ called")
self.value = value
def __call__(self, x):
print(f"__call__ with {x}")
obj = Example(10) # Вызовет __new__ и __init__
obj(5) # Вызовет __call__
```
Вывод:
```
__new__ called
__init__ called
__call__ with 5
```