Construct a dictionary with String (or other) keys and unbound methods or functions as values. During execution, use the string keys to select which method or function to execute. Can be used for simple parsing of tokens from a file thru a kind of object-oriented case statement.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import string
def function1():
print "called function 1"
def function2():
print "called function 2"
def function3():
print "called function 3"
tokenDict = {"cat":function1, "dog":function2, "bear":function3}
# simulate, say, lines read from a file
lines = ["cat","bear","cat","dog"]
for line in lines:
# lookup the function to call for each line
functionToCall = tokenDict[line]
# and call it
functionToCall()
|
It's embarrasingly simple really, but I use it a whole lot. Instead of functions, methods might also be used (self.method1), remember to follow the binding rules if you use methods directly from classes.
You can also pass in any attributes (including those read from a file) to the functions you call. The possibilities are pretty diverse.
I primarily use this in places where in other languages I might want a case statement. I also use it to provide a poor man's way to parse command files (say an X10 macro control file).