我在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
答案 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()