Bonjour,
Lorsque l'on assigne un attribut ayant le même nom qu'une méthode, celui ci prends la priorité sur cette dernière. Est ce normal si cela ne fonctionne pas pour l'attribut __getitem__, accédé avec la syntaxe d[] ? (Je suis en Py25)
Merci d'avance
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 A(dict): def __init__(self): dict.__init__(self) def __getitem__(self, k): print "A.get ",k return dict.__getitem__(self, k) class D(A): def __init__(self): A.__init__(self) self._inner= dict() "Shortcuts __getattr__ to self._inner" self.__getattr__= self._inner.__getitem__ if __name__ == '__main__': d=D() d._inner[0]= 1 d[0]= 1 print "d.__getattr__(0)" d.__getattr__(0) # does not call A.__getitem__, as expected print "d[0]" d[0] # this CALLS A.__getitem__, UNEXPECTED !
Partager