Saltar para o conteúdo principal
🔒 Modo de pré-visualização. As primeiras quinze aulas de Foundations são grátis; esta é Pro. Inicie um trial de 7 dias para desbloquear o editor, as dicas AI e o resto do programa. Cartão necessário, cancele a qualquer momento no Dashboard.Iniciar trial de 7 dias →
← CursosSenior Deep-DivesMódulo 1 · Simultaneidade e aspectos internos assíncronosMetaclassespredict5 / 161
+100 XP
Tarefa
📝 **Tarefa:** Prever o resultado exato. \`Meta.__new__\` imprime \`meta_new:<nome>\` conforme cada classe é construída. \`Base.__init_subclass__\` imprime \`init_sub:<nome>\` e anexa a \`registry\`. Duas perguntas: (1) O \`init_sub\` dispara quando o próprio \`Base\` é criado? (2) Dentro de \`Meta.__new__\` — \`print\` é executado antes ou depois de \`super().__new__\` construir a classe? 📋 Implemente a função acima. Os testes são executados automaticamente. 💡 **Dica:** Releia a teoria se tiver dúvidas.
Prevê a saída

Lê o código com atenção

class Meta(type):
    def __new__(mcs, name, bases, ns):
        print(f"meta_new:{name}")
        return super().__new__(mcs, name, bases, ns)


class Base(metaclass=Meta):
    registry = []
    def __init_subclass__(cls, **kwargs):
        print(f"init_sub:{cls.__name__}")
        Base.registry.append(cls.__name__)


class A(Base):
    pass


class B(Base):
    pass


print(Base.registry)

O que o programa vai imprimir? Escreve aqui:

💬 Discussão

Seja o primeiro a fazer uma pergunta ou compartilhar uma dica.
Faça login para entrar na discussão. A leitura é gratuita.
Carregando discussão…