Предположим, что мы создали ситуацию, когда мы создаем класс, который имеет некоторый набор параметров, и мы можем вытащить некоторые данные для экземпляра этого класса (например, для определенной даты) из базы данных (которая предположительно не слишком быстро). Это то, что мы имеем:Правильная конструкция для повторного использования результатов более общих функций
class MyClass:
def __init__(self, param1, param2):
self.param1 = param1
self.param2 = param2
def getData(self, date):
return # here goes the query result converted to dict
Теперь, если я хотел бы иметь несколько функций, в том классе, который получает некоторые частные часто используемые вещи из этой базы данных:
def getT(self, date):
return self.getData(date)['temperature']
def getP(self, date):
return self.getData(date)['pressure']
Проблемы вот если бы я хотел запросить температуру, а затем давление, он должен выполнить запрос дважды. Как я могу избежать этого? Является ли дизайн неправильным?
Если вы используете python 3.2, вы можете использовать 'functools.lru_cache'. – HYRY
@HYRY Отредактированные теги: Я использую python 2.7. – sashkello