我正在尝试使用函数__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。
在执行此代码段之后,我希望instance
是TestScript
类的对象。我想念什么?
答案 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__