Calling a method with a variable name
Diez B. Roggisch
deets at nospam.web.de
Wed Nov 4 15:57:24 CET 2009
Simon Mullis wrote:
> Hi All,
> I'm collating a bunch of my utility scripts into one, creating a
> single script to which I will symbolic link multiple times. This way
> I only have to write code for error checking, output-formatting etc a
> single time.
> So, I have
> ~/bin/foo -> ~/Code/python/mother_of_all_utility_scripts.py
> ~/bin/bar -> ~/Code/python/mother_of_all_utility_scripts.py
> ~/bin/baz -> ~/Code/python/mother_of_all_utility_scripts.py
> I would like "bar" to run the bar method (and so on).
> class Statistic()
> def __init__(self):
> def foo(self):
> return "foo!"
> def bar(self):
> return "bar!"
> # ... and so on...
> def main():
> stats_obj = Statistic()
> name = re.sub("[^A-Za-z]", "", sys.argv)
> method = getattr(stats_obj, name, None)
> if callable(method):
> stats_obj.name() # <------------HERE
> print "nope, not sure what you're after...."
> However, as I'm sure you've all noticed already, there is no method
> called "name". I would really prefer to get a nudge in the right
> direction before I start evaling variables and so on.
> Does my approach make sense? If not, please give me a hint...
You are almost there. Why don't you do
More information about the Python-list