Метакласс — это «класс класса» — он определяет, как сами классы создаются и структурируются. По умолчанию каждый класс Python является экземпляром встроенного метакласса type.
Когда Python встречает оператор class, он вызывает метакласс для создания объекта класса. Ключевой метод здесь — __new__, который получает:
name — имя класса в виде строкиbases — кортеж родительских классовdct — словарь атрибутов и методов классаclass Meta(type):
def __new__(cls, name, bases, dct):
print(f"Creating class: {name}")
return super().__new__(cls, name, bases, dct)
class MyClass(metaclass=Meta):
pass
# Output: Creating class: MyClass
Пользовательские метаклассы полезны для:
Метаклассы — это мощный, но сложный инструмент. В большинстве реальных сценариев альтернативы вроде декораторов классов или __init_subclass__ проще и предпочтительнее. Метаклассы лучше всего использовать на уровне фреймворков или библиотек, где действительно требуется глубокий контроль над созданием классов.
Метакласс — это экземпляр класса type, и по умолчанию каждый класс в Python является экземпляром своего метакласса.
Новый — ещё не проверен сообществом
Вы