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/

Responder a