Classic vs New-style classes...

Aahz aahz at pythoncraft.com
Fri Jun 20 23:27:33 EDT 2003


In article <mailman.1056162937.4237.python-list at python.org>,
Martin Chilvers <martin_chilvers at gmx.net> wrote:
>First of all, I should have asked a better question ;^)
>Second, I think I've answered it myself!
>
>> I've searched the archives and docs for an answer to this one, but I'm
>> still stuck...
>>
>> >>> class Foo(object)
>> ... pass
>> ...
>> >>> Foo.__dict__['bar'] = lambda self, x: x * 2
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in ?
>> TypeError: object does not support item assignment
>> >>> type(Foo.__dict__)
>> <type 'dict-proxy'>
>
>What I really wanted was this:-
>
>	def addToClass(klass, name, value):
>    	    exec('klass.%s = value' % name)
>
>With classic classes, it can be written as:-
>
>	def addToClass(klass, name, value):
>    	    klass.__dict__[name] = value
>
>So now my question is... is this the cleanest way with new-style classes?

Try setattr() instead.
-- 
Aahz (aahz at pythoncraft.com)           <*>         http://www.pythoncraft.com/

Usenet is not a democracy.  It is a weird cross between an anarchy and a
dictatorship.  




More information about the Python-list mailing list