一次评估函数并将结果存储在python中

时间:2015-01-26 09:08:18

标签: python static-methods evaluation-strategy

我在python中编写了一个静态方法,需要时间来计算,但我希望它只计算一次,之后返回计算值。 我该怎么办 ? 这是一个示例代码:

class Foo:
    @staticmethod
    def compute_result():
         #some time taking process 

Foo.compute_result() # this may take some time to compute but store results
Foo.compute_result() # this method call just return the computed result

2 个答案:

答案 0 :(得分:0)

我认为你想要做的是memoizing。 有几种方法可以使用装饰器,其中一种方法是使用functools(Python 3)或一些short handwritten code,如果你只关心hashable类型(也适用于Python 2)。

您可以为一种方法注释多个装饰器。

@a
@b
def f():
   pass

答案 1 :(得分:0)

def evaluate_result():
    print 'evaluate_result'
    return 1

class Foo:
    @staticmethod
    def compute_result():
        if not hasattr(Foo, '__compute_result'):
            Foo.__compute_result = evaluate_result()
        return Foo.__compute_result 

Foo.compute_result()
Foo.compute_result()