All right. Thanks for explaining that Maric. Maric Michaud wrote: > Le lundi 26 juin 2006 16:06, [EMAIL PROTECTED] a écrit : > > Fredrik Lundh wrote: > > > [EMAIL PROTECTED] wrote: > > > > When I tried to update a class's __dict__, I got an error saying that > > > > there is no 'update' attribute for dictproxy object. What is a > > > > dictproxy object? > > > > > > a CPython implementation detail, used to protect an internal data > > > structure used by new-style objects from unexpected modifications. > > > > > > </F> > > > > Ah, so I'm not suppose to be able to change a class's __dict__? Thanks > > Fredrik. > > Of course, yes : > > In [1]: class a(object) : pass > ...: > > In [2]: a.__dict__ > Out[2]: <dictproxy object at 0xa7e01d34> > > In [3]: a.__dict__.items() > Out[3]: > [('__dict__', <attribute '__dict__' of 'a' objects>), > ('__module__', '__main__'), > ('__weakref__', <attribute '__weakref__' of 'a' objects>), > ('__doc__', None)] > > In [4]: a.__dict__['foo'] = lambda s : True > --------------------------------------------------------------------------- > exceptions.TypeError... > > TypeError: object does not support item assignment > > hmmm, not this way, but : > > In [5]: a.foo = lambda s : True > > In [6]: a.__dict__.items() > Out[6]: > [('__dict__', <attribute '__dict__' of 'a' objects>), > ('__module__', '__main__'), > ('foo', <function <lambda> at 0xa79528ec>), > ('__weakref__', <attribute '__weakref__' of 'a' objects>), > ('__doc__', None)] > > In [7]: a().foo() > Out[7]: True > > or : > > In [9]: setattr(a, 'bar', lambda s : False) > > In [10]: a().bar() > Out[10]: False > > > -- > _____________ > > Maric Michaud > _____________ > > Aristote - www.aristote.info > 3 place des tapis > 69004 Lyon > Tel: +33 426 880 097
-- http://mail.python.org/mailman/listinfo/python-list