如何动态加载Python类

如何动态加载Python类,第1张

如何动态加载Python类

在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')


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5631882.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存