Vai al contenuto principale
🔒 Modalità anteprima. Le prime quindici lezioni di Foundations sono gratuite; questa è Pro. Avvia un trial di 7 giorni per sbloccare l'editor, i suggerimenti AI e il resto del programma. Carta richiesta, disdici in qualsiasi momento dalla Dashboard.Avvia trial di 7 giorni →
← CorsiSenior Deep-DivesModulo 1 · Concorrenza e aspetti interni asincroniMetaclassipredict5 / 161
+100 XP
Compito
📝 **Compito:** Prevedere l'output esatto. \`Meta.__new__\` stampa \`meta_new:<nome>\` man mano che viene creata ogni classe. \`Base.__init_subclass__\` stampa \`init_sub:<nome>\` e lo aggiunge a \`registro\`. Due domande: (1) \`init_sub\` si attiva quando viene creata la stessa \`Base\`? (2) All'interno di \`Meta.__new__\` — \`print\` viene eseguito prima o dopo che \`super().__new__\` ha creato la classe? 📋 Implementa la funzione sopra. I test vengono eseguiti automaticamente. 💡 **Suggerimento:** Rileggi la teoria se rimani bloccato.
Predici output

Leggi il codice attentamente

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)

Cosa stamperà il programma? Scrivi qui:

💬 Discussione

Sii il primo a fare una domanda o condividere un consiglio.
Accedi per partecipare alla discussione. La lettura è gratuita.
Caricamento discussione…