Given a string - execute a function by the same name
Gary Herron
gherron at islandtraining.com
Mon Apr 28 12:53:54 EDT 2008
python at bdurham.com 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
> --
> http://mail.python.org/mailman/listinfo/python-list
>
You are on the right track with (2), but you need not do any conversion.
All objects that have attributes (and a function is an attribute) can
be looked up with getattr.
For instance, from a module (function getcwd from modules os):
>>> import os
>>> getattr(os,'getcwd')
<built-in function getcwd>
>>> getattr(os,'getcwd')()
'/home/gherron'
You can use getattr with objects, classes, modules, and probably more.
Gary Herron
More information about the Python-list
mailing list