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