Хранение рассчитанных значений в объекте
Недавно я написал несколько таких кодов:
class A:
def __init__(self, x):
self.x = x
self._y = None
def y(self):
if self._y is None:
self._y = big_scary_function(self.x)
return self._y
def z(self, i):
return nice_easy_function(self.y(), i)
В данном классе у меня может быть несколько вещей, работающих такy
и у меня могут быть другие вещи, которые используют сохраненные предварительно вычисленные значения. Это лучший способ сделать что-то или вы бы порекомендовали что-то другое?
Обратите внимание, что я не рассчитываю здесь заранее, потому что вы можете использовать экземплярA
без использованияy
.
Я написал пример кода на Python, но меня будут интересовать ответы, специфичные для других языков, если они уместны. И наоборот, я хотел бы услышать от Pythonistas о том, считают ли они этот код Pythonic или нет.