Yo diría que es porqué estás haciendo un get de d, y ya cuando lo tienes haces una asignación al índice 'a' de ese objeto.
----- Pau Python..., what else? 2011/1/31 Jose Caballero <jcaballero....@gmail.com> > Hola, > > perdón por el subject, es un poco críptico. Intento explicarlo... > > Sea una clase C como la siguiente > > ---------------------------------------------------------------------- > class C: > def __init__(self): > self.x = 0 > self.d = {'a':'A','b':'B'} > def __setattr__(self, var, value): > print 'invoking __setattr__ ', var, value > self.__dict__[var] = value > ---------------------------------------------------------------------- > > Si ahora escribimos un código como > > obj = C() > > Se genera el siguiente output > > invoking __setattr__ x 0 > invoking __setattr__ d {'a': 'A', 'b': 'B'} > > Que corresponde a las dos asignaciones que aparecen en el __init__() > Perfecto. > > ---------------------------------------------------------------------- > > Si además hacemos algo como > > obj.x = 1 > > obtenemos una nueva línea en el output > > invoking __setattr__ x 1 > > ---------------------------------------------------------------------- > > Sin embargo no veo una línea similar si ahora escribo > > obj.d['a']='AA' > > ¿Por qué? > > > > > > > > > > _______________________________________________ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > >
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/