Help with dynamic attributes.

Fredrik Lundh fredrik at pythonware.com
Mon Jan 9 09:50:24 EST 2006


"Mr.Rech" wrote:

> class foo(object):
>    def __init__(self, list_of_lists):
>        self.lol = list(list_of_lists)
>
>        for i in range(len(list_of_lists)):
>            exec 'self.x%d = self.lol[%d]' % (i, i)
>
>        self.shape = tuple(len(item) for item in self.lol)

generator expressions are anonymous functions, and the "self" in that line
is a free variable (that is, it belongs to an outer scope).  Python uses static
analysis to identify free variables, and that doesn't mix well with exec.

> Any better way to get the same attributes I got with the exec statement?

use setattr(self, name, value)

</F> 






More information about the Python-list mailing list