如果要查找的是由于另一个属性的更新而导致更新一个属性(而不是重新计算访问时下游属性的值),请使用属性设置器:
class SomeClass(object): def __init__(self, n): self.list = range(0, n) @property def list(self): return self._list @list.setter def list(self, val): self._list = val self._listsquare = [x**2 for x in self._list ] @property def listsquare(self): return self._listsquare @listsquare.setter def listsquare(self, val): self.list = [int(pow(x, 0.5)) for x in val]>>> c = SomeClass(5)>>> c.listsquare[0, 1, 4, 9, 16]>>> c.list[0, 1, 2, 3, 4]>>> c.list = range(0,6)>>> c.list[0, 1, 2, 3, 4, 5]>>> c.listsquare[0, 1, 4, 9, 16, 25]>>> c.listsquare = [x**2 for x in range(0,10)]>>> c.list[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]



