是否有任何现成的 Python 模块可以提供易于使用的代理对象,仅在真正需要时初始化“真实”对象?
理想情况下,我正在寻找一种透明的实现,以便处理此代理对象的代码不需要知道它不是实际的对象。
我想这样使用它:
class Example:
def __init__(self):
print("Example initialized")
lazy = Proxy(Example)
print(isinstance(lazy, Example))
# Example initialized
# True
如您所见,它的行为非常类似于unittest.MagicMock。
如果没有任何库提供这样的功能,我将自己实现它,但我想确保还没有其他人这样做过。
编辑
我希望这个代理对象遵循完整的实现 like this .
最佳答案
我找到了模块lazy-object-proxy这正是这样做的。
值得一提的是,正如 @Marat 指出的 Django offers a solution as well ,虽然我不想为此导入 Django,但如果您已经在项目中使用它,那么这将是一个完美的解决方案。
关于python - 用于延迟初始化的代理对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48634064/