Python · Avançado · Inglês · Técnico
metaclass
A classe de uma classe: o objeto que constrói e configura as classes. Por padrão é type, e você pode criar a sua para alterar como as classes são definidas.
Onde usar
Aparece em frameworks que registram ou validam classes na criação, como ORMs e ABCs. Hoje muitos casos se resolvem com __init_subclass__ ou decorators de classe, que são mais simples.
Em código
class Meta(type):
def __new__(m, n, b, d):
print('criando', n)
return super().__new__(m, n, b, d)
class A(metaclass=Meta):
passExemplos
Do we really need a metaclass for this?
Precisamos mesmo de uma metaclass para isso?
In Python, type is the metaclass of every regular class.
Em Python, type é a metaclass de toda classe comum.
Cuidado
Evite quando um decorator de classe ou o __init_subclass__ resolve; metaclasses são difíceis de combinar na herança múltipla.
Sinônimos
metaclasse