Нет, не разрешено поднимать NotYetCalculatedError
в любой программе (если расчет не займет несколько часов работы).
get_other_var()
должен автоматически рассчитывать риск
То, что вы на самом деле хотите сделать, это выполнить все вычисления, когда вы инициализируете класс , или, если вы не можете этого сделать, вы захотите сделать это:
class InsuranceRiskModel(object):
def __init__(self, person):
self.person = person
self.calculated = False
def calculateModel(self):
if not self.calculated:
self.risk = 6
self.other_var = 5
self.calculated = True
@property
def risk(self):
self.calculateModel()
return self.risk
@property
def other_var(self):
self.calculateModel()
return self.other_var
Затем вы можете в любое время получить доступ к InsuranceRiskModel(bob).risk
или InsuranceRiskModel(bob).other_var
, и вычисления будут выполнены прозрачно.
Чтобы ответить на ваш более общий вопрос, «парадигма python для [атрибутов класса, представленных] хранимыми вычислениями» - это абстракция свойства класса, включающая прозрачные определяемые пользователем методы получения и установки и удаления, как показано выше; больше информации здесь http://docs.python.org/library/functions.html#property