通过名称动态导入类以实现静态访问
我正在动态生成类名,然后想通过这个名字来导入类,以便访问一个静态方法。
这是我想在 "the_module.py" 中导入的类:
class ToImport(object):
@classmethod
def initialize(cls, parameter):
print parameter
根据一篇博客文章,这是我目前的进展:
theModule = __import__("the_module")
toImport = getattr(theModule, "ToImport")
toImport.initialize("parameter")
但是博客中的例子似乎不完整,因为它给了我一个模块对象,却没有我想要的类 ToImport
。查看 __import__()
的文档,我发现这个函数还有更多可选的属性。我成功地使用了
theModule = __import__("the_module", globals(), locals(), ["ToImport"])
为什么我必须提供 fromlist
属性?难道我不能导入所有模块的属性吗?
1 个回答
2
我做的和你一模一样,成功获取了那个类。
In [1]: theModule = __import__("the_module")
In [2]: toImport = getattr(theModule, "ToImport")
In [3]: toImport.initialize("parameter")
parameter
我用的是Python 2.6.4。你能再详细解释一下,具体是哪里不管用吗?