Problem with getting an option value

Bruno Desthuilliers bruno.42.desthuilliers at wtf.websiteburo.oops.com
Tue Apr 10 11:24:10 EDT 2007


Lucas Malor a écrit :
> Peter Otten wrote:
>> Lucas Malor wrote:
>>> The problem is options is an instance, so options."delete", for
>>> example, is wrong; I should pass options.delete . How can I do?
>> Use getattr():
> 
> 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.

You should use a dict to do the dispatch:
   funcs = {'int':getint, 'bool', getboolean, ...}

Then you just have to:
   result = funcs[type](args...)


> How can I invoke the funcion with its name in a string?

If you used the full import, ie:
   import ConfigParser

you can use getattr() on the ConfigParser module object (yes, modules 
are objects).


If you directly imported the functions in your own module/script 
namespace, using either
   from ConfigParser import some_func
or
   import ConfigParser.some_func as some_func

then there's the globals() function that returns a dict of all 
names=>objects defined in the namespace, so you can use:

globals()['some_func'](args)


HTH



More information about the Python-list mailing list