Calling a method with a variable name

Simon Mullis simon at
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/
 ~/bin/bar  -> ~/Code/python/
 ~/bin/baz  -> ~/Code/python/

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



More information about the Python-list mailing list