Iterate creating variables?

Hyuga hyugaricdeau at gmail.com
Mon Jun 16 15:28:47 CEST 2008


On Jun 13, 11:34 am, "Reedick, Andrew" <jr9... at ATT.COM> wrote:
> > -----Original Message-----
> > From: python-list-bounces+jr9445=att.... at python.org [mailto:python-
> > list-bounces+jr9445=att.... at python.org] On Behalf Of tda... at gmail.com
> > Sent: Friday, June 13, 2008 11:11 AM
> > To: python-l... at python.org
> > Subject: Iterate creating variables?
>
> > I have twenty-five checkboxes I need to create (don't ask):
>
> > self.checkbox1 = ...
> > self.checkbox2 = ...
> > .
> > .
> > .
> > self.checkbox25 = ...
>
> > Right now, my code has 25 lines in it, one for each checkbox, since
> > these are all variables.
>
> > Is there a way to write a loop so that I can have fewer lines of code
> > but still keep the variables?
>
> > I've tried:
>
> > for o in xrange(25):
> >     self.checkbox[o] = ...
>
> > which didn't work, and
>
> > for o in xrange(25):
> >     self.checkbox[''%d'%(o)] = ...
>
> > which also didn't work.
>
> > Both give the error message: "Attribute error: Main.App has no
> > attribute "checkbox"", which clearly indicates that I'm not keeping
> > the "variability" aspect I want.
>
> > Is there a way?
>
> > I appreciate any and all answers!
>
> Either store the checkboxes in an array or hash/dictionary.  If that's
> not practical, then
> You can use strings to build the code and use eval to execute the string
> as code.  Ex:
>
> for i in range(10):
>         code = "%d + %d" % (i, i)
>         print eval(code)

Don't do this.  You want

for idx in range(10):
    setattr(self, 'checkbox_%i' % idx)



More information about the Python-list mailing list