用于延迟初始化的代理对象

时间:2018-02-06 01:20:46

标签: python lazy-initialization proxy-classes

是否有任何现成的Python模块,它提供了一个易于使用的代理对象,只能初始化" real"真正需要时的对象?

理想情况下,我正在寻找透明的实现,以便处理此代理对象的代码不需要知道它不是实际的对象。

我想这样用:

class Example:
    def __init__(self):
        print("Example initialized")

lazy = Proxy(Example)
print(isinstance(lazy, Example))
# Example initialized
# True

正如你所看到的,它的行为非常像unittest.MagicMock。

如果没有任何提供此类功能的库我会自己实现,但我想确定没有其他人这样做过。

修改

我希望此代理对象遵循实施like this

1 个答案:

答案 0 :(得分:1)

我发现模块lazy-object-proxy正是这样做的。

值得一提的是@Marat指出Django offers a solution as well,虽然我不想为此导入Django,如果你已经在项目中使用它,那将是一个非常好的解决方案。