Problem with getting an option value

Bruno Desthuilliers bdesth.quelquechose at free.quelquepart.fr
Wed Apr 11 16:17:54 EDT 2007


Nanjundi a écrit :
> On Apr 10, 10:23 am, "Lucas Malor" <80xuux... at sneakemail.com> wrote:
> 

>> Thank you. Do you know also if I can do a similar operation with
>> functions? I want to select with a string a certain get() function
>> of ConfigParser:
>> 
>> if   type == "int" : funcname = "getint" elif type == "bool" : 
>> funcname = "getboolean" etc.
>> 
> 
>> How can I invoke the funcion with its name in a string?
> 
> Use exec to assign to a variable.

Oh, yes, soooo simple !-)

> 
>>>> def testPrint(msg):
> 
> ...    print 'Msg: %s' % msg ...
> 
>>>> sfunc = "testPrint" exec("f = %s" % sfunc) f('Hello Python')
> 
> Msg: Hello Python
> 
> & use 'f = self.%s' % name for class methods.
> 
> Hope its not a bad practice!

Using exec (or eval) is not a bad practice in itself, but using it when
there are much simpler solutions is certainly a WTF.

See the other posts in this thread for more idiomatic solutions to the 
OP's problem (mainly: dict-based dispatch,  use of getattr on module 
objects, and use of the locals() and/or globals() builtins).

HTH



More information about the Python-list mailing list