在python文档中,这是您想要的功能:
def my_import(name): components = name.split('.') mod = __import__(components[0]) for comp in components[1:]: mod = getattr(mod, comp) return mod
一个简单的方法
__import__不起作用的原因是,任何超出包字符串中第一个点的导入都是您要导入的模块的属性。因此,这样的事情将无法工作:
__import__('foo.bar.baz.qux')
您必须像这样调用上述函数:
my_import('foo.bar.baz.qux')
或以您的示例为例:
klass = my_import('my_package.my_module.my_class')some_object = klass()
编辑 :我对此有些反对。您基本上想做的是这样的:
from my_package.my_module import my_class
仅当您的发件人列表为 空时, 才需要上述功能。因此,适当的调用将如下所示:
mod = __import__('my_package.my_module', fromlist=['my_class'])klass = getattr(mod, 'my_class')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)