Sari la conținutul principal
🔒 Mod previzualizare. Primele cincisprezece lecții Foundations sunt gratuite; aceasta este Pro. Pornește un trial de 7 zile pentru a debloca editorul, sugestiile AI și restul programului. Card necesar, anulează oricând în Dashboard.Pornește trial de 7 zile →
← CursuriSenior Deep-DivesModulul 1 · Concurență și asincrone interneMetaclasepredict5 / 161
+100 XP
Sarcină
📝 **Sarcina:** Preziceți rezultatul exact. \`Meta.__new__\` afișează \`meta_new:<nume>\` pe măsură ce fiecare clasă este construită. \`Base.__init_subclass__\` tipărește \`init_sub:<nume>\` și se adaugă la \`registry\`. Două întrebări: (1) Se declanșează \`init_sub\` când este creată \`Base\`? (2) În interiorul \`Meta.__new__\` — rulează \`print\` înainte sau după ce \`super().__new__\` construiește clasa? 📋 Implementați funcția de mai sus. Testele rulează automat. 💡 **Sugestie:** Recitiți teoria dacă rămâneți blocat.
Prezice ieșirea

Citește codul cu atenție

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)

Ce va afișa programul? Scrie aici:

💬 Discuție

Fii primul — pune o întrebare sau împărtășește un sfat.
Conectează-te pentru a te alătura discuției. Citirea este gratuită.
Se încarcă discuția…