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
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/