我想实现从其他属性计算出的类属性。
class Sum(object):
@property
def a(self):
return self._a
@a.setter
def a(self, val):
self._a = a
self._constructSeries()
@property
def b(self):
return self._b
@b.setter
def b(self, val):
self._b = b
self._constructSeries()
def _constructSeries(self):
# Some calculations involving a and b
self._series = function(a, b)
def __init__(self, a, b):
self.a = a
self.b = b
我知道的一种方法是将系列定义为属性
@property
def series(self):
return fun(a,b)
但是我想避免每次都调用fun,因为这需要大量的计算。处理这种情况的标准方法是什么?
如果我做对了,您希望能够在不每次计算乐趣的情况下更改a和b,但是当您请求乐趣的结果是最新的乐趣时,是否正确?
在这种情况下,您可以使用属性
def get_series(self):
if self._series is None or self.updated is False:
self._series = fun(self.a,self.b)
self.updated = True
return self._series
series = property(get_series)
并且当您设置a和b时,您将更新标志
@property
def a(self):
self.updated = False
return self._a
@property
def b(self):
self.updated = False
return self._b