Hi list, I'm trying to understand how to use a class-level dictionary to act as a switch for class methods. In the contrived example below, I have the statistic name as the key and the class method as the value.
class Statistics(object): STAT = { 'MEAN': get_mean, 'SUM': get_sum, } def __init__(self, a, b): self.a = a self.b = b def get_mean(self): return (self.a + self.b) / 2.0 def get_sum(self): return (self.a + self.b) def get_stat(self, stat): f = self.STAT[stat.upper()] return f(self) if __name__ == '__main__': spam = Statistics(4, 3) print spam.get_stat('mean') print spam.get_stat('sum') When I try to run this, I get: NameError: name 'get_mean' is not defined If I move the STAT dictionary to the bottom of the class, it works fine. I understand why I get an error, i.e. when the dictionary is created get_mean hasn't yet been defined, but I'm wondering if there is a better common practice for doing this type of lookup. My web searches didn't come up with anything too applicable. thanks, matt _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor