一旦导入了foo
类的bar
模块,
import importlib
foo = importlib.import_module('path/to/foo')
您如何直接调用bar.run()
而不是foo.bar.run()
?
我想你可以做到这一点bar = foo.bar
但是我想对foo中的所有对象执行此操作,但不能对每个对象都执行此操作,这将花费太多时间。
答案 0 :(得分:1)
您可能需要枚举foo
模块中导出的对象,并将它们分配给全局变量。在导入模块的常规机制中,*
将与__all__
变量中列出的名称匹配,或者将获取所有不以下划线(_
)开头的名称。>
names = getattr(foo, '__all__', [])
if not names:
names = [n for n in foo.__dict__.keys() if n[:1] != '_']
for name in names:
globals()[name] = getattr(foo, name)