Calling a method with a variable name

Simon Mullis simon at mullis.co.uk
Wed Nov 4 15:54:39 CET 2009


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):
         pass

    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[0])
    method = getattr(stats_obj, name, None)
    if callable(method):
        stats_obj.name()              #  <------------HERE
    else:
        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...

Thanks

SM



More information about the Python-list mailing list