Какие методы метакласса (metaclass) вызываются при создании класса
Python
Middle
Без компании
Какие методы метакласса (metaclass) вызываются при создании класса
Ответы
Метакласс управляет созданием класса, и при этом вызываются следующие методы:
- `__prepare__(cls, name, bases, **kwargs)` (опциональный) — вызывается первым, возвращает пространство имён (обычно `dict`) для хранения атрибутов класса.
- `__new__(mcls, name, bases, namespace, **kwargs)` — создаёт и возвращает новый класс.
- `__init__(cls, name, bases, namespace, **kwargs)` — инициализирует созданный класс.
Пример:
```
class Meta(type):
@classmethod
def __prepare__(cls, name, bases, **kwargs):
print("__prepare__")
return {}
def __new__(mcls, name, bases, namespace, **kwargs):
print("__new__")
return super().__new__(mcls, name, bases, namespace)
def __init__(cls, name, bases, namespace, **kwargs):
print("__init__")
super().__init__(name, bases, namespace)
class MyClass(metaclass=Meta):
pass
```