Sobes.tech
Junior — Middle

Que chamadas de métodos da metaclasse ocorrem durante o processo de definição de uma nova classe?

sobes.tech IA

Resposta da IA

Ao definir uma nova classe em Python, a metaclasse controla o processo de criação da classe. As principais chamadas aos métodos da metaclasse ocorrem na seguinte ordem:

  1. __new__ — é chamado para criar um novo objeto de classe (ou seja, a própria classe). Aqui, pode-se modificar ou preparar os atributos da classe antes de sua criação.

  2. __init__ — inicializa o objeto de classe criado, geralmente usado para configurações adicionais.

  3. __call__ — é chamado ao criar instâncias da nova classe, mas isso ocorre após a definição da classe.

Exemplo de uma metaclasse simplificada:

class Meta(type):
    def __new__(cls, name, bases, dct):
        print(f"Criando a classe {name}")
        return super().__new__(cls, name, bases, dct)

    def __init__(cls, name, bases, dct):
        print(f"Inicializando a classe {name}")
        super().__init__(name, bases, dct)

class MyClass(metaclass=Meta):
    pass

Ao executar, será exibido:

Criando a classe MyClass
Inicializando a classe MyClass

Assim, durante a definição de uma nova classe, os métodos __new__ e __init__ da metaclasse são chamados.