setattr in class
Fredrik Lundh
fredrik at pythonware.com
Fri Sep 12 11:18:06 EDT 2008
Bojan Mihelac wrote:
> Hi all - when trying to set some dynamic attributes in class, for
> example:
>
> class A:
> for lang in ['1', '2']:
> exec('title_%s = lang' % lang) #this work but is ugly
> # setattr(A, "title_%s" % lang, lang) # this wont work
>
> setattr(A, "title_1", "x") # this work when outside class
>
> print A.title_1
> print A.title_2
>
> I guess A class not yet exists in line 4. Is it possible to achive
> adding dynamic attributes without using exec?
Move the for-in loop out of the class definition:
>>> class A:
... pass
...
>>> for lang in ['1', '2']:
... setattr(A, "title_%s" % lang, lang)
>>> a = A()
>>> a.title_1
'1'
A truly dynamic solution (using __getattr__ and modification on access)
would probably give you a more "pythonic" solution.
</F>
More information about the Python-list
mailing list