bonjour,
ci dessous un petit bout de code.
je ne comprends pas pourquoi j'arrive à déclenché le descripteur __get__ en variable de classe et pas en variable d'instance
pourtant, d'apres la doc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 class Prop(object): def __get__(self, instace, owner): return "Prop __get__" class Model1(object): a=Prop() class Model2(object): def __init__(self): self.a = Prop() testModel1 = Model1() testModel2 = Model2() print testModel1.a print testModel2.a #>>> Prop __get__ #>>><__main__.Prop object at 0x0000000002718EF0>
il me semble que je suis dans le cas de l'instance binding, mais j'avoue que je peux avoir des ( grosses ) lacunes en anglais.The starting point for descriptor invocation is a binding, a.x. How the arguments are assembled depends on a:
Direct Call
The simplest and least common call is when user code directly invokes a descriptor method: x.__get__(a).
Instance Binding
If binding to a new-style object instance, a.x is transformed into the call: type(a).__dict__['x'].__get__(a, type(a)).
Class Binding
If binding to a new-style class, A.x is transformed into the call: A.__dict__['x'].__get__(None, A).
Merci pour votre aide
Partager