Python的文档说,本地导入还有一种选择,可以防止在启动时加载模块:
https://docs.python.org/3/library/unittest.mock-examples.html#mocking-imports-with-patch-dict
......通过延迟进口来防止“前期成本”。 与无条件的本地方法相比,这也可以通过更好的方法解决 导入(将模块存储为类或模块属性,仅执行 首次使用时导入)。
我不理解方括号中的说明。我该怎么做呢?但是我考虑一下,无论如何我似乎最终还是要从本地进口。
答案 0 :(得分:0)
文档可能引用了importlib.import_module
的使用,它公开了Python的import
功能:
import importlib
class Example():
TO_IMPORT = "os" # the name of the module to lazily import
__module = None
def __init__(self):
if self.__module is None:
self.__module = importlib.import_module(self.TO_IMPORT)
请注意,通过这种方式,模块仅在首次实例化该类时才导入一次,并且在全局名称空间中不可用。
此外,它允许您更改导入的模块,这可能很有用,例如如果使用相同的类作为不同后端的接口:
import importlib
class Example():
def __init__(self, backend="some_module"):
self.module = importlib.import_module(backend)