Robert Bossy wrote:
> Jules Stevenson wrote:
>>
>> Hello all,
>>
>> I'm fairly green to python and programming, so please go gently. The 
>> following code
>>
>> for display in secondary:
>>
>> self.("so_active_"+display) = wx.CheckBox(self.so_panel, -1, 
>> "checkbox_2")
>>
>> Errors, because of the apparent nastyness at the beginning. What I’m 
>> trying to do is loop through a list and create uniquely named wx 
>> widgets based on the list values. Obviously the above doesn’t work, 
>> and is probably naughty – what’s a good approach for achieving this?
>>
> Hi,
> 
> What you're looking for is the builtin function setattr:
> http://docs.python.org/lib/built-in-funcs.html#l2h-66

     Actually, you don't need to use attributes for this at all.
You're better off with an ordinary dictionary.  Something like this:

        class someclass(object) :
            def __init__(self) :
                self.widgets = {} # empty dictionary

            def addwidget(self, widgetname, widgetfn)
                self.widgets[widgetname] = widgetfn

            def callwidgetbyname(self, widgetname, args)
                self.widgets[widgetname](*args)

The only reason to use attributes is when you want to allow the
use of the notation

        objectinstance.attributename

If you're only going to get the attributes with getattr, they
don't need to be attributes.

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

Reply via email to