1

一部のクラスには、計算コストの高いプロパティがいくつかあります。これらのプロパティは、可変/基になる属性が変更されない限り変更されません。高価な資産を保管し、変更が加えられた場合にのみ再計算する方法はありますか?

4

1 に答える 1

1

プロパティメソッドの他の変数をテストし、それらをキャッシュキーの一部として使用できます。

class CachedProperties(object):
    @property
    def expensiveValue(self):
        cacheKey = (self.var1, self.var2)
        if cacheKey in self._expensiveValueCache:
            return self._expensiveValueCache[cacheKey]

        # No cached value available, calculate it now
        res = self._expensiveValueCache[cacheKey] = calculation(self.var1, self.var2)
        return res

ここで、実際に高価な値が必要になり var1またはvar2が変更されるまで、計算を延期します。

于 2012-07-03T12:23:40.533 に答える