ExpertiDict

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

dunder init subclass

/ˈdʌndəɹ ˈɪnɪt ˈsʌbklæs/substantivo

Gancho __init_subclass__ chamado na classe base toda vez que uma subclasse é definida. Permite registrar ou validar subclasses sem precisar de metaclass.

Onde usar

Substitui a metaclass em plugins e registros automáticos, algo comum em frameworks. Em code review, é preferido por ser bem mais simples de entender e de combinar.

Em código

class Plugin:
  registro = []
  def __init_subclass__(cls, **kw):
    super().__init_subclass__(**kw)
    Plugin.registro.append(cls)
class Csv(Plugin): pass
print(Plugin.registro[0].__name__)  # Csv

Exemplos

We register every plugin in dunder init subclass.

Registramos todo plugin no dunder init subclass.

Dunder init subclass replaced our old metaclass.

O dunder init subclass substituiu a nossa antiga metaclass.

Cuidado

Ele roda quando a subclasse é criada, não quando uma instância é criada; não confunda com __init__.

Sinônimos

gancho de subclasse

Veja também

Todos os termos de Python