On Apr 28, 9:33 am, [EMAIL PROTECTED] wrote: > I'm parsing a simple file and given a line's keyword, would like to call > the equivalently named function. > > There are 3 ways I can think to do this (other than a long if/elif > construct): > > 1. eval() > > 2. Convert my functions to methods and use getattr( myClass, "method" ) > > 3. Place all my functions in dictionary and lookup the function to be > called > > Any suggestions on the "best" way to do this? > > Thank you, > Malcolm
You can always import yourself and use getattr on that module. in file "mytest.py": def foo(): print "foo called" def call_by_name(name, *args, **kwargs): import mytest f = getattr(mytest, "foo") f(*args, **kwargs) if __name__ == "__main__": call_by_name('foo') Alternatively you can import __main__ if you are always going to be running directly from that file. Matt -- http://mail.python.org/mailman/listinfo/python-list