Как устроен метакласс
Python
Senior
Без компании
Как устроен метакласс
Ответы
Метакласс — это класс, который создаёт другие классы. В Python метаклассы контролируют создание классов, подобно тому как классы контролируют создание экземпляров.
По умолчанию метаклассом является `type`. Когда вы определяете класс, Python вызывает `type.__new__()` для его создания.
Пример метакласса:
```
class Meta(type):
def __new__(cls, name, bases, namespace):
print(f"Создание класса {name}")
return super().__new__(cls, name, bases, namespace)
class MyClass(metaclass=Meta):
pass # Выведет: "Создание класса MyClass"
```
**Как это работает:**
- Python ищет метакласс в определении класса (`metaclass=Meta`).
- Вызывает `Meta.__new__()`, передавая имя класса, родительские классы и атрибуты.
- Метакласс может модифицировать создаваемый класс (например, добавить методы, проверить атрибуты).
Используется редко, в основном для:
- Валидации атрибутов класса.
- Автоматической регистрации классов (например, в ORM).
- Изменения поведения наследования.