考虑以下最小的例子:
class Foo(object):
def __init__(self):
self.b = self.a = 1
@property
def sum(self):
print 'Recalculating sum'
return self.a + self.b
foo = Foo()
print foo.sum
print foo.sum # Prints 'Recalculating sum' even though neither a or b has changed since previous call
foo.a = 2
print foo.sum # a has been changed to 2 so recalculation is necessary
我想记住sum
,这样如果self.a
和{
只有在self.a
或{
也可以使用
a
和b
的属性,并在setter中清除缓存:或者,如果你想要更普通的东西,你也可以检查一下: Storing calculated values in an object
编辑:最近有人建议在},它调用{},它设置了}将被创建。在
__init__
中添加self._sum = None
,以“避免访问sum时出错”,但这实际上不是必需的-__init__
调用{_sum
属性,因此它被保证{相关问题 更多 >
编程相关推荐