有时我喜欢为对象编写getter属性,以便第一次调用它时,完成一次繁重的工作,然后保存该值并在未来调用时返回。在objective-c中,我会使用一个ivar或一个静态变量来保存这个值。例如:Python中用于实现懒惰getter的正确模式是什么?
- (id)foo
{
if (_foo == nil)
{
_foo = // hard work to figure out foo
}
return _foo
}
这种模式在Python中是否可以很好地保持,或者有更好的方法来做到这一点?到目前为止,我基本上都是一样的。我不喜欢我的解决方案是,我的对象被堆满了价值和getter这些值:
def foo(self):
if not hasattr(self, "mFoo":
self.mFoo = # heavy lifting to compute foo
return self.mFoo
谢谢,@property不去那个类,但它呢? – 2012-03-13 04:13:29
@darren事实上它不会,这就是我在午夜错误的一面张贴的内容。 :)我现在修复了它。 – lvc 2012-03-13 06:35:03