Přejít k hlavnímu obsahu
🔒 Režim náhledu. Prvních patnáct lekcí Foundations je zdarma; tato je Pro. Spusťte 7denní trial pro odemčení editoru, AI nápověd a zbytku kurzu. Karta vyžadována, zrušte kdykoli v Dashboard.Spustit 7denní trial →
← KurzySenior Deep-DivesModul 1 · Concurrency & Async InternalsMetatřídypredict5 / 161
+100 XP
Úkol
📝 **Úkol:** Předpovězte přesný výstup. \`Meta.__new__\` vytiskne \`meta_new:<jméno>\` při vytváření každé třídy. \`Base.__init_subclass__\` vytiskne \`init_sub:<jméno>\` a připojí se k \`registru\`. Dvě otázky: (1) Spustí se \`init_sub\`, když je vytvořena samotná \`Base\`? (2) Uvnitř \`Meta.__new__\` — běží \`print\` před nebo po vytvoření třídy \`super().__new__\`? 📋 Implementujte výše uvedenou funkci. Testy probíhají automaticky. 💡 **Tip:** Pokud se zaseknete, přečtěte si znovu teorii.
Předpověz výstup

Přečti kód pozorně

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)

Co program vypíše? Napiš sem:

💬 Diskuze

Buď první — polož otázku nebo se podělej o tip.
Přihlas se abys se zapojil do diskuze. Čtení je zdarma.
Načítání diskuze…