ExpertiDict

Python · Avançado · Inglês · Técnico

metaclass

/ˈmɛɾəˌklæs/substantivo

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):
  pass

Exemplos

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

Veja também

Todos os termos de Python