Рассмотрим следующее:
@property
def name(self):
if not hasattr(self, '_name'):
# expensive calculation
self._name = 1 + 1
return self._name
Я новичок, но я думаю, что кеширование можно было бы учесть в декораторе. Только я этого не нашел;)
PS реальный расчет не зависит от изменяемых значений