Что такое метаклассы в Python
Python
Middle
Без компании
Что такое метаклассы в Python
Ответы
Метаклассы — это "классы классов", которые контролируют создание и поведение других классов. В Python метаклассом по умолчанию является `type`.
**Пример:**
```
class Meta(type):
def __new__(cls, name, bases, attrs):
attrs['extra'] = 100 # Добавляем атрибут всем классам
return super().__new__(cls, name, bases, attrs)
class MyClass(metaclass=Meta):
pass
print(MyClass.extra) # 100
```
**Основные моменты:**
- Метаклассы позволяют перехватывать создание класса (через `__new__` или `__init__`).
- Используются для автоматического добавления атрибутов, валидации, регистрации классов и т.д.
- Альтернатива — декораторы классов (проще, но менее мощные).
**Когда применять:**
- При создании ORM (как в Django).
- Для реализации паттернов вроде Singleton.
- Для автоматической генерации кода.
Осторожно: сложность метаклассов может усложнить поддержку кода!