Calling a method with a variable name
Diez B. Roggisch
deets at nospam.web.de
Wed Nov 4 09:57:24 EST 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):
> 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...
You are almost there. Why don't you do
if callable(method):
method()
?
Diez
More information about the Python-list
mailing list