Przejdź do treści głównej
🔒 Tryb podglądu. Pierwszych piętnaście lekcji Foundations jest darmowych; ta jest Pro. Rozpocznij 7-dniowy trial, aby odblokować edytor, podpowiedzi AI i resztę kursu. Wymagana karta, anulujesz w dowolnym momencie w Dashboard.Rozpocznij 7-dniowy trial →
← KursySenior Deep-DivesModuł 1 · Współbieżność i asynchroniczne elementy wewnętrzneMetaklasypredict5 / 161
+100 XP
Zadanie
📝 **Zadanie:** Przewiduj dokładny wynik. \`Meta.__new__\` wypisuje \`meta_new:<nazwa>\` po zbudowaniu każdej klasy. \`Base.__init_subclass__\` wypisuje \`init_sub:<nazwa>\` i dołącza do \`rejestru\`. Dwa pytania: (1) Czy \`init_sub\` jest uruchamiany, gdy tworzona jest sama \`Base\`? (2) Wewnątrz \`Meta.__new__\` — czy \`print\` działa przed, czy po zbudowaniu klasy przez \`super().__new__\`? 📋 Zaimplementuj powyższą funkcję. Testy uruchamiają się automatycznie. 💡 **Wskazówka:** Jeśli utkniesz, przeczytaj ponownie teorię.
Przewiduj wynik

Przeczytaj kod uważnie

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 wypisze program? Napisz tutaj:

💬 Dyskusja

Zadaj pierwsze pytanie lub podziel się wskazówką.
Zaloguj się aby dołączyć do dyskusji. Czytanie jest darmowe.
Ładowanie dyskusji…