Python中用于实现惰性getter的正确模式是什么?

D.C*_*.C. 6 python getter design-patterns

有时我喜欢为一个对象编写getter属性,这样第一次调用它们时,繁重的工作就会完成一次,并且该值会被保存并在将来的调用中返回.在objective-c中,我将使用ivar或静态变量来保存此值.就像是:

- (id)foo
{
    if ( _foo == nil )
    {
        _foo = // hard work to figure out foo
    }
    return _foo
}
Run Code Online (Sandbox Code Playgroud)

这种相同的模式在Python中是否能够很好地运行,或者有更多可接受的方式吗?到目前为止我基本上都是一样的.我不喜欢我的解决方案是我的对象混淆了值和这些值的getter:

def foo(self):
    if not hasattr(self, "mFoo":
        self.mFoo = # heavy lifting to compute foo
    return self.mFoo
Run Code Online (Sandbox Code Playgroud)

Ign*_*ams 7

请改用懒惰的属性.吸气剂是1990年代的.