按名称动态导入类以进行静态访问

时间:2009-12-21 11:39:15

标签: python class import

我正在动态生成类名,然后想要按名称导入该类以访问静态方法。

这是要在“the_module.py”中导入的类:

class ToImport(object):

    @classmethod
    def initialize(cls, parameter):
        print parameter

根据Blog post,这就是我来的:

theModule = __import__("the_module")
toImport = getattr(theModule, "ToImport")
toImport.initialize("parameter")

但博客示例似乎不完整,因为它给了我一个没有我想要的类ToImport的模块对象。查看__import__() documentation向我显示该函数有更多可选属性。

我成功了
theModule = __import__("the_module", globals(), locals(), ["ToImport"])

为什么我必须提供fromlist属性?我不能导入所有模块属性吗?

1 个答案:

答案 0 :(得分:2)

我完成了你的所作所为,并检索了该课程。

In [1]: theModule = __import__("the_module")

In [2]: toImport = getattr(theModule, "ToImport")

In [3]: toImport.initialize("parameter")
parameter

我正在使用Python 2.6.4。你能进一步解释一下,究竟什么对你不起作用?