Zum Hauptinhalt springen
🔒 Vorschaumodus. Die ersten fünfzehn Foundations-Lektionen sind kostenlos; diese hier ist Pro. Starte einen 7-Tage-Trial, um den Editor, AI-Hinweise und den Rest des Lehrplans freizuschalten. Karte erforderlich, jederzeit im Dashboard kündbar.7-Tage-Trial starten →
← KurseSenior Deep-DivesModul 1 · Parallelität und asynchrone InternaMetaklassenpredict5 / 161
+100 XP
Aufgabe
📝 **Aufgabe:** Die genaue Ausgabe vorhersagen. \`Meta.__new__\` gibt \`meta_new:<name>\` aus, während jede Klasse erstellt wird. \`Base.__init_subclass__\` gibt \`init_sub:<name>\` aus und hängt an \`registry\` an. Zwei Fragen: (1) Wird \`init_sub\` ausgelöst, wenn \`Base\` selbst erstellt wird? (2) Innerhalb von „Meta.__new__“ – wird „print“ ausgeführt, bevor oder nachdem „super().__new__“ die Klasse erstellt? 📋 Implementieren Sie die obige Funktion. Tests laufen automatisch ab. 💡 **Hinweis:** Lesen Sie die Theorie noch einmal, wenn Sie nicht weiterkommen.
Sage die Ausgabe vorher

Lies den Code sorgfältig

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)

Was wird das Programm ausgeben? Schreib hier:

💬 Diskussion

Sei der erste — stelle eine Frage oder teile einen Tipp.
Anmelden um an der Diskussion teilzunehmen. Lesen ist kostenlos.
Diskussion wird geladen…