"Variable variable name" or "variable lvalue"

Gary Herron gherron at islandtraining.com
Sun Aug 19 13:10:07 EDT 2007


inmmike at gmail.com wrote:
> On Aug 15, 1:42 pm, mfglinux <mfgli... at gmail.com> wrote:
>   
>> Hello to everybody
>>
>> I would like to know how to declare in python a "variable name" that
>> it is in turn a variable
>> In bash shell I would wrote sthg like:
>>
>> for x in `seq 1 3`
>> do
>>   M$i=Material(x)  #Material is a python class
>> done
>>
>> Why I need this? Cause I have a python module that obliges me to build
>> a variable called Period, which should have a variable name of
>> summands (depends on the value of x)
>>
>> #Let's say x=3, then Period definition is
>> Period=Slab(Material1(12.5)+Material2(25)+Material3(12.5)) #Slab is a
>> python class
>>
>> I dont know how to automatize last piece of code for any x
>>
>> thank you
>>
>> Marcos
>>     
>
> Regardless of whether or not this is a "best practice" sometimes it is
> necessary. For example, I am looping through a dictionary to set some
> class properties. Anyway, here is what I finally came up with:
>
> exec "self.%s = '%s'" % (item, plist[item])
>   
Yuck!  Not at all necessary.  Use setattr instead:

   setattr(self, item, plist[item])

That's much cleaner then an exec or eval.  You may also find getattr and
hasattr useful.

Gary Herron



> A more simple example for setting a variable outside of a class...
>
> exec '%s = '%s'" % ('variableName', 'variable value')
>
> Cheers!
> Mike
>
>   




More information about the Python-list mailing list