Aller au contenu principal
🔒 Mode aperçu. Les quinze premières leçons Foundations sont gratuites ; celle-ci est Pro. Démarrez un trial de 7 jours pour débloquer l'éditeur, les conseils AI et le reste du programme. Carte requise, annulez à tout moment dans Dashboard.Démarrer le trial de 7 jours →
← CoursSenior Deep-DivesModule 6 · FAANG-2026 deep divesDescriptor lookup order — data vs non-datapredict106 / 161
+150 XP
Tâche
📝 **Tâche :** Prédisez le résultat exact. Deux descripteurs : \`DataDesc\` définit à la fois \`__get__\` ET \`__set__\` (descripteur de données) ; \`NonDataDesc\` définit uniquement \`__get__\` (non-données). Les deux sont des attributs de classe sur \`Holder\`. Ensuite, le test introduit directement les valeurs dans le \`__dict__\` de l'instance, en contournant le protocole du descripteur. Lequel gagne pour \`h.d\` et lequel pour \`h.n\` ? 📋 Implémentez la fonction ci-dessus. Les tests s'exécutent automatiquement. 💡 **Indice :** Relisez la théorie si vous êtes bloqué.
Prédis la sortie

Lis le code attentivement

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)

Que va afficher le programme ? Écris ici :

💬 Discussion

Soyez le premier à poser une question ou partager une astuce.
Connectez-vous pour rejoindre la discussion. La lecture est gratuite.
Chargement de la discussion…