2

假设我们有一种情况,当我们创建一个具有一些参数集的类时,我们可以从数据库中提取该类实例的一些数据(例如,对于某个特定日期)(这应该不会太快)。这就是我们所拥有的:

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']

这里的问题是,如果我想查询温度和压力,它必须运行两次查询。我怎样才能避免这种情况?我建议的设计是错误的吗?

4

1 回答 1

3

在对象实例中按日期缓存查询结果。像这样的东西:

class Myclass:
    def __init__(self, param1, param2):
        self.param1 = param1
        self.param2 = param2
        self._datacache = {}

    def getData(self, date):
        if date not in self._datacache:
            self._datacache[date] = # here goes the query result converted to dict
        return self._datacache[date]

有可能的变化,但这是基本的想法。使用此版本,您的其他吸气剂可以按照您编写的方式工作。或者您可以直接使用查询结果。

于 2013-11-07T05:56:59.423 回答