开发者

Having to evaluate a string to access a class from a module

I've loaded one of my modules <modu开发者_StackOverflow社区le my_modules.mymodule from .../my_modules/mymodule.pyc> with __import__.

Now I'm having the module saved in a variable, but I'd like to create an instance of the class mymodule. Thing is - I've gotten the module name passed as string into my script. So I've got a variable containing the module, and I've got the module name but as string.

variable_containing_module.string_variable_with_correct_classname() doesn't work. Because it says there is no such thing in the module as "string_variable_with_correct_classname" - because it doesn't evaluate the string name. How can I do so?


Your problem is that __import__ is designed for use by the import internals, not really for direct usage. One symptom of this is that when importing a module from inside a package, the top-level package is returned rather than the module itself.

There are two ways to deal with this. The preferred way is to use importlib.import_module() instead of using __import__ directly.

If you're on an older version of Python that doesn't provide importlib, then you can create your own helper function:

import sys
def import_module(module_name):
    __import__(module_name)
    return sys.modules[module_name]

Also see http://bugs.python.org/issue9254

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜