繁体   English   中英

我如何做python unittest doc推荐的懒惰导入方法?

[英]How do I do python unittest doc's recommended method of lazy import?

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

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

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

我不明白括号中的解释。 我该怎么做呢? 不过我考虑一下,无论如何,我似乎最终都是本地进口商品。

该文档可能涉及使用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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM