可能重複:
python: are property fields being cached automatically?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)
我認爲面積不計算在第一時間就被稱爲直到,但一旦它被稱爲是,緩存值直到某些內容發生變化或者每次調用時都會重新計算它?換句話說,如果我有一個屬性(不像這個)計算起來相對昂貴,並且會反覆使用,我應該讓它成爲一個屬性,還是將它作爲一個值存儲起來更有效率,以及當它真的需要更新時明確地明確它的含義?
您不必選擇或者。如果尚未加載,您可以擁有一個緩存自己的屬性,然後可以按需定期回收。 –