在 python 中调用 setter 中的方法
Calling a method in setter in python
我想实现根据其他属性计算的 class 属性。
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
然后 self.series
returns 更新值,但只要输入从上次计算时发生变化,它就会运行起来很有趣。
我想实现根据其他属性计算的 class 属性。
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
然后 self.series
returns 更新值,但只要输入从上次计算时发生变化,它就会运行起来很有趣。