On Sep 26, 7:26 pm, "Joe Goldthwaite" <[EMAIL PROTECTED]> wrote: > The code gets kind of wordy so I started trying to figure out how to call > them dynamically since the param type is the same as the method the > retrieves it. I came up with this; > > def getValue(trend, param, per): > return trend.__class__.__dict__[param](trend, per) > > That worked but it seems like the above line would have to do lots more > object look ups at runtime so I didn't think it would be very efficient. I > thought maybe I could add a caller method to the trend class and I came up > with this; > > class trend: > ... > ... > ... > def caller(self, param, *args): > return self.__class__.__dict__[param](self, *args) > > This simplified the getValue function to this; > > def getValue(trend, param, per): > return trend.caller(param, per)
You're calling a function (getValue) that just calls a method of trend (caller), that just calls another method of trend (Ptd or Qtd or ...). You can skip all these steps, and just call the method yourself: the code that calls getValue(trend, param, per) replace with trend.<something>(per) if you're calling getValue with a static value for param, or getattr(trend, param)(per) if param is dynamic. -- Paul Hankin -- http://mail.python.org/mailman/listinfo/python-list