0

我在 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
4

2 回答 2

0

我想你想做的就是所谓的memoizing。有几种使用装饰器的方法,其中一种是使用functools(Python 3)或一些简短的手写代码,如果您只关心可散列类型(也适用于 Python 2)。

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

@a
@b
def f():
   pass
于 2015-01-26T09:14:59.023 回答
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()
于 2015-01-26T09:21:38.280 回答