python unittest doc推荐的惰性导入方法?

时间:2018-10-29 04:34:25

标签: python python-import

Python的文档说,本地导入还有一种选择,可以防止在启动时加载模块:

https://docs.python.org/3/library/unittest.mock-examples.html#mocking-imports-with-patch-dict

  

......通过延迟进口来防止“前期成本”。   与无条件的本地方法相比,这也可以通过更好的方法解决   导入(将模块存储为类或模块属性,仅执行   首次使用时导入)。

我不理解方括号中的说明。我该怎么做呢?但是我考虑一下,无论如何我似乎最终还是要从本地进口。

1 个答案:

答案 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)