下面是我的代码段
class TestClass:
def __init__(self,n1,n2):
self.n1 = n1
self.n2 = n2
self._sum = None # WILL BE COMPUTED LATER ON
@property
def sum(self):
if self._sum is None:
self._sum = self.compute_sum()
return self._sum
def compute_sum(self):
return(self.n1+self.n2)
test_obj = TestClass(5,6)
print(test_obj.sum)
这只是一个示例程序,说明了我所面临的问题。 我有一个带有私有变量_sum的类,在其中我想保存两个数字n1和n2的值。
属性sum可以由外部世界使用(可以这样说)来访问和值,而无需修改其值。我有一个私有变量_sum的原因是,该值只计算一次并存储起来,以便以后进行提取。
只有@property会在每次有人尝试通过实例访问sum的值时计算该值,而我想避免这种情况 对性能的影响(请记住,这只是一个示例,用于说明我面临的实际问题)
鉴于我的要求是能够对所有要使用的外部对象求和,但同时又不希望每次调用都对它进行计算,这是我的实现吗?设计明智吗?
有趣的是,甚至在调用函数之前就已计算_sum的值,至少我的IDE能够做到这一点,不确定如何做到。
在下面的屏幕快照中,我们位于第9行,尚未调用compute_sum(),但该值已被计算。怎么来的 ?