Что такое метаклассы?
Этот вопрос проверяет понимание метаклассов и их роли в управлении процессом создания классов в Python.
Короткий ответ
Метакласс — это класс для создания других классов. Он управляет поведением классов на этапе их определения. По умолчанию метакласс всех классов в Python — это type, но его можно переопределить, чтобы изменить процесс создания или поведение классов.
Длинный ответ
Метаклассы в Python позволяют изменять или расширять поведение классов. Они определяются с помощью ключевого слова metaclass. По умолчанию Python использует метакласс type, который создаёт новые классы.
Пример создания метакласса:
class MyMeta(type):
def __new__(cls, name, bases, dct):
print(f"Создаётся класс: {name}")
return super().__new__(cls, name, bases, dct)
class MyClass(metaclass=MyMeta):
pass
# Вывод:
# Создаётся класс: MyClassПрименения метаклассов:
- Валидация атрибутов класса.
- Динамическое добавление методов.
- Логирование создания классов.
Метаклассы используются редко, но полезны в сложных архитектурах или библиотеках, например, Django ORM.