
deets at nospam
Nov 4, 2009, 6:57 AM
Post #2 of 4
(164 views)
Permalink
|
|
Re: Calling a method with a variable name
[In reply to]
|
|
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 -- http://mail.python.org/mailman/listinfo/python-list
|