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

Reply via email to