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>

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to