Μετάβαση στο κύριο περιεχόμενο
🔒 Λειτουργία προεπισκόπησης. Τα πρώτα δεκαπέντε μαθήματα Foundations είναι δωρεάν· αυτό είναι Pro. Ξεκινήστε ένα 7ήμερο trial για να ξεκλειδώσετε τον επεξεργαστή, τις υποδείξεις AI και το υπόλοιπο του προγράμματος. Απαιτείται κάρτα, ακυρώνετε οποιαδήποτε στιγμή από το Dashboard.Ξεκινήστε 7ήμερο trial →
← ΜαθήματαSenior Deep-DivesΕνότητα 1 · Concurrency & Async InternalsΜετατάξειςpredict5 / 161
+100 XP
Εργασία
📝 **Εργασία:** Προβλέψτε την ακριβή έξοδο. Το \`Meta.__new__\` εκτυπώνει το \`meta_new:<name>\` καθώς δημιουργείται κάθε κλάση. Το \`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)

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

💬 Συζήτηση

Γίνε ο πρώτος — κάνε μια ερώτηση ή μοιράσου μια συμβουλή.
Σύνδεση για να συμμετάσχεις στη συζήτηση. Η ανάγνωση είναι δωρεάν.
Φόρτωση συζήτησης…