从包内部获取课程

时间:2019-11-08 13:48:35

标签: python

我正在尝试使用函数__import__(...)getattr(...)来创建位于模块内部的类的对象。该模块本身包含在包装中。

该类名为TestScript。它位于名为TestScript.py的文件中。该文件位于名为TestScripts的文件夹中。因此,根据我对python的理解,文件TestScript.py被解释为模块,文件夹TestScripts被解释为包。

所以,我这样尝试过:

moduleName = 'TestScripts.TestScript'
className = 'TestScript'
module = __import__(moduleName)
targetClass = getattr(module, className)
instance = targetClass()

但是出现消息“模块'TestScripts'没有属性'TestScript'”的AttributeError。

在执行此代码段之后,我希望instanceTestScript类的对象。我想念什么?

1 个答案:

答案 0 :(得分:0)

有关完整说明,请参见__import__

要让您的代码执行您想要的操作:

moduleName = 'Testscripts.TestScript'
className = 'TestClass'
module = __import__(moduleName) #could use fromlist here as @Iguananaut suggests
targetModule = getattr(module, "TestScript")
targetClass =  getattr(targetModule, className)
instance = targetClass()

请注意-python文档强烈建议不要直接使用 __import__