On Fri, 2007-08-03 at 17:22 -0700, James Stroud wrote: > Hello All, > > Say I have this code: > > > import AModule > import ModuleUser > > ModuleUser.do_something_with(AModule, 'some_function_name') > > > But say the functions are defined in the same module that contains the > above code. I can imagine this hack: > > > import AModule > import ModuleUser > > ModuleUser.do_something_with(AModule.__name__, 'some_name') > > > Where AModule.__name__ could be substituted for __name__ under the > proper circumstances. Then, I would have this code in ModuleUser: > > > import sys > def do_something_with(modname, funcname): > afunction = sys.modules[modname].funcname > [etc.] > > > Which is terribly ugly to me and makes for a pretty miserable API in my > opinion, requiring the programmer to type underscores. > > > Basically, what I am trying to acomplish is to be able to do this in any > arbitrary module or __main__: > > > funcname = determined_externally() > ModuleUser.do_something_with(AModule, funcname) > > > Ideally, it would be nice to leave out AModule if the functions were > designed in the same namespace in which do_something_with is called. > > Thanks in advance for any suggestions.
I can't be too sure because you may have abstracted away too much of what you're actually trying to accomplish, but it seems to me that instead of passing a reference to the current module and a function name, you should just pass a reference to the function that you want do_something_with to call. If I missed the point of your question, please describe less abstractly what you're trying to do. -- Carsten Haese http://informixdb.sourceforge.net -- http://mail.python.org/mailman/listinfo/python-list