可能重复:
python:属性字段是否被自动缓存?
作为对 python 中属性效率的关注,我想知道它们何时以及多久被调用一次。
举一个简单的例子,假设我是 namedtuple 的子类,我有类似的东西:
from collections import namedtuple
from math import pi
class Circle (namedtuple('Circle', 'x, y, r')):
__slots__ = ()
@property
def area(self):
return pi*self.r**2
unitCircle = Circle(0, 0, 1.0)
print 'The area of the unit circle is {0} units'.format(unitCircle.area)
我假设直到第一次调用该区域时才计算该区域,但是一旦调用该区域,该值是否会缓存到某些内容发生更改或每次调用时都会重新计算?
换句话说,如果我有一个属性(与这个不同)计算起来相对昂贵并且会被重复使用,我应该让它成为一个属性,还是将它存储为一个值并在何时显式计算它更有效?它真的需要更新吗?