"Variable variable name" or "variable lvalue"

inmmike at gmail.com inmmike at gmail.com
Tue Sep 11 21:26:47 EDT 2007


On Aug 19, 1:10 pm, Gary Herron <gher... at islandtraining.com> wrote:
> inmm... 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

Thanks! I'm still getting used to Python's nifty features.




More information about the Python-list mailing list