修改类实例属性后,如何获取类中fitness函数的更新计算结果?
解决Python类中属性修改后动态更新计算值的问题
你当前的代码里,fitness是在类初始化时就计算好的固定值,后续修改x不会触发它重新计算,所以打印出来还是初始化时的10,不是修改后的12。
最简单的解决方式是用@property装饰器,把fitness定义成动态属性,每次访问时都会基于当前最新的x值重新计算:
class ready: def __init__(self, x): self.x = x @property def fitness(self): return fit(self.x) def fit(z): return z p = ready(10) p.x = 12 print(p.fitness) # 输出12
这样每次访问p.fitness时,都会自动调用对应的方法,用当前的self.x去执行fit函数,自然就能得到更新后的结果。
如果不想用@property,也可以把fitness改成一个方法,每次调用p.fitness()来获取最新值,但@property的方式更符合属性的使用习惯。
内容的提问来源于stack exchange,提问作者ELLA
相关产品推荐
相关产品推荐

