Μετάβαση στο κύριο περιεχόμενο
🔒 Λειτουργία προεπισκόπησης. Τα πρώτα δεκαπέντε μαθήματα Foundations είναι δωρεάν· αυτό είναι Pro. Ξεκινήστε ένα 7ήμερο trial για να ξεκλειδώσετε τον επεξεργαστή, τις υποδείξεις AI και το υπόλοιπο του προγράμματος. Απαιτείται κάρτα, ακυρώνετε οποιαδήποτε στιγμή από το Dashboard.Ξεκινήστε 7ήμερο trial →
← ΜαθήματαSenior Deep-DivesModule 6 · FAANG-2026 deep divesDescriptor lookup order — data vs non-datapredict106 / 161
+150 XP
Εργασία
📝 **Εργασία:** Προβλέψτε την ακριβή έξοδο. Δύο περιγραφείς: Το \`DataDesc\` ορίζει και τα δύο \`__get__\` ΚΑΙ \`__set__\` (περιγραφέας δεδομένων). Το \`NonDataDesc\` ορίζει μόνο το \`__get__\` (χωρίς δεδομένα). Και τα δύο είναι χαρακτηριστικά κλάσης στο \`Holder\`. Στη συνέχεια, η δοκιμή εισάγει κρυφά τιμές στο \`__dict__\` της παρουσίας απευθείας — παρακάμπτοντας το πρωτόκολλο του περιγραφέα. Ποιο κερδίζει για \`h.d\` και ποιο για \`h.n\`; 📋 Υλοποιήστε την παραπάνω λειτουργία. Οι δοκιμές εκτελούνται αυτόματα. 💡 **Υπόδειξη:** Ξαναδιάβασε τη θεωρία αν κολλήσεις.
Πρόβλεψε έξοδο

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

class DataDesc:
    def __get__(self, instance, owner):
        print("data:get")
        return 1
    def __set__(self, instance, value):
        print(f"data:set:{value}")


class NonDataDesc:
    def __get__(self, instance, owner):
        print("nondata:get")
        return 2


class Holder:
    d = DataDesc()
    n = NonDataDesc()


h = Holder()
h.__dict__["d"] = "shadow_d"
h.__dict__["n"] = "shadow_n"

print(h.d)
print(h.n)

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

💬 Συζήτηση

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