Thanks for your help Kent The error was that I was trying to assign to a non-assignable reference as you highlighted. Everything works now
Thanks Andy Kent Johnson wrote: > Andy Cheesman wrote: >> for thing in ["top", "right", "bottom", "left"]: >> eval("self." + thing).append("fish") > > You don't need to use eval() here, use getattr() instead: > getattr(self, thing).append('fish') > >> eval("self." + thing +"_extra") >> eval("self." + thing) = external_function(eval("self." + thing)) >> #This >> falls > > It would help if you said *how* it fails - the specific error message > and traceback. I guess it is failing on the left side of the assignment, > not the function call. The result of eval("self." + thing) is the value > of self.thing, not an assignable reference. You should use getattr() and > setattr() here: > > new_value = external_function(getattr(self, thing)) > setattr(self, thing, new_value) > > or in one line if you like: > setattr(self, thing, external_function(getattr(self, thing))) > > http://docs.python.org/lib/built-in-funcs.html > > Kent > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor