Re: Calling a method with a variable name
May I be the first to say "Doh!" Problem solved, many thanks to both Carsten and Diez! SM 2009/11/4 Carsten Haese : > Simon Mullis wrote: >> 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() #> 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. > > At the point you marked "HERE", you've already found the method, and you > have determined that it is callable. You just need to call it. Like > this: method(). > > HTH, > > -- > Carsten Haese > http://informixdb.sourceforge.net > > -- > http://mail.python.org/mailman/listinfo/python-list > -- Simon Mullis _ si...@mullis.co.uk -- http://mail.python.org/mailman/listinfo/python-list
Re: Calling a method with a variable name
Simon Mullis wrote: > 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() #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. At the point you marked "HERE", you've already found the method, and you have determined that it is callable. You just need to call it. Like this: method(). HTH, -- Carsten Haese http://informixdb.sourceforge.net -- http://mail.python.org/mailman/listinfo/python-list
Re: Calling a method with a variable name
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() #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
Calling a method with a variable name
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() #