Μετάβαση στο κύριο περιεχόμενο
🔒 Λειτουργία προεπισκόπησης. Τα πρώτα δεκαπέντε μαθήματα Foundations είναι δωρεάν· αυτό είναι Pro. Ξεκινήστε ένα 7ήμερο trial για να ξεκλειδώσετε τον επεξεργαστή, τις υποδείξεις AI και το υπόλοιπο του προγράμματος. Απαιτείται κάρτα, ακυρώνετε οποιαδήποτε στιγμή από το Dashboard.Ξεκινήστε 7ήμερο trial →
⚡
← Μαθήματα›Senior Deep-DivesΕνότητα 1 · Concurrency & Async Internals›Μετατάξειςpredict5 / 161
+100 XP
Εργασία
📝 **Εργασία:** Προβλέψτε την ακριβή έξοδο. Το \`Meta.__new__\` εκτυπώνει το \`meta_new:<όνομα>\` καθώς δημιουργείται κάθε κλάση. Το \`Base.__init_subclass__\` εκτυπώνει το \`init_sub:<name>\` και προσαρτά στο \`registry\`. Δύο ερωτήσεις: (1) Το \`init_sub\` ενεργοποιείται όταν δημιουργείται το ίδιο το \`Base\`; (2) Μέσα στο \`Meta.__new__\` — το \`print\` εκτελείται πριν ή μετά το \`super().__new__\` τη δημιουργία της κλάσης; 📋 Υλοποιήστε την παραπάνω λειτουργία. Οι δοκιμές εκτελούνται αυτόματα. 💡 **Υπόδειξη:** Ξαναδιάβασε τη θεωρία αν κολλήσεις.
Πρόβλεψε έξοδο

Διάβασε τον κώδικα προσεκτικά

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)

Τι θα εμφανίσει το πρόγραμμα; Γράψε εδώ: