惰性初始化的代理对象
Proxy object for lazy initialization
是否有现成的 Python 模块提供易于使用的代理对象,仅在真正需要时才初始化 "real" 对象?
理想情况下,我正在寻找一个透明的实现,这样处理这个代理对象的代码就不需要知道它不是实际对象。
我想这样使用它:
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 模块提供易于使用的代理对象,仅在真正需要时才初始化 "real" 对象?
理想情况下,我正在寻找一个透明的实现,这样处理这个代理对象的代码就不需要知道它不是实际对象。
我想这样使用它:
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,但如果您已经在您的项目中使用它,那将是一个完美的解决方案。