Хранение рассчитанных значений в объекте

Недавно я написал несколько таких кодов:

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 или нет.

Ответы на вопрос(3)

Ваш ответ на вопрос