Ugrás a fő tartalomra
🔒 Előnézet mód. Az első tizenöt Foundations lecke ingyenes; ez Pro. Indíts 7 napos trial-t, hogy feloldd a szerkesztőt, az AI tippeket és a tananyag többi részét. Kártya szükséges, bármikor lemondhatod a Dashboard-ban.7 napos trial indítása →
← KurzusokSenior Deep-Dives1. modul · Konkurencia és aszinkron belsőkMetaosztályokpredict5 / 161
+100 XP
Feladat
📝 **Feladat:** A pontos kimenet előrejelzése. A \`Meta.__new__\` kiírja a \`meta_new:<név>\` az egyes osztályok felépítése közben. A \`Base.__init_subclass__\` kiírja az \`init_sub:<név>\` értéket, és hozzáfűzi a \`registry\`-hoz. Két kérdés: (1) Az \`init_sub\` elindul, amikor maga a \`Base\` létrejön? (2) A \`Meta.__new__\` belsejében – a \`print\` az osztály felépítése előtt vagy után fut-e a \`super().__new__\`? 📋 Valósítsa meg a fenti funkciót. A tesztek automatikusan futnak. 💡 **Tipp:** Ha elakad, olvassa el újra az elméletet.
Találd ki a kimenetet

Olvasd el a kódot figyelmesen

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)

Mit ír ki a program? Írd ide:

💬 Beszélgetés

Légy az első — tegyél fel kérdést vagy oszd meg egy tippet.
Jelentkezz be hogy csatlakozz a beszélgetéshez. Az olvasás ingyenes.
Beszélgetés betöltése…