the missing () was the trick! However, I'm passing in a few variables, so I can't just take it out-though every single function would be passing the same variables.
so something.func() is actually something.func(string, list) How would I modify it to include them? Sorry I didn't include them the first time, I was trying to simplify it to make it easier...oops! Fredrik Lundh wrote: > "unexpected" <[EMAIL PROTECTED]> wrote: > > > I have a program where based on a specific value from a dictionary, I > > call a different function. Currently, I've implemented a bunch of > > if..elsif statements to do this, but it's gotten to be over 30 right > > now and has gotten rather tedious. Is there a more efficient way to do > > this? > > > > Code: > > > > value = self.dictionary.get(keyword)[0] > > > > if value == "something": > > somethingClass.func() > > elsif value == "somethingElse": > > somethingElseClass.func() > > elsif value == "anotherthing": > > anotherthingClass.func() > > elsif value == "yetanotherthing": > > yetanotherthingClass.func() > > > > Is it possible to store these function calls in a dictionary so that I > > could just call the dictionary value? > > but of course (did you try it?). here's an outline: > > dispatch = { > "something": somethingClass.func, # note: no () here > "somethingElse": somethingElseClass.func, > "anotherthing": anotherthingClass.func, > "yetanotherthing": yetanotherthingClass.func, > } > > ... > > dispatch[value]() # note: do the call here! > > or, a bit more robust: > > try: > func = dispatch[value] > except KeyError: > print "- no handler for", value > else: > func() > > tweak as necessary. > > </F> -- http://mail.python.org/mailman/listinfo/python-list