【发布时间】:2013-12-26 21:05:06
【问题描述】:
我正在编写一个应用程序来收集和显示来自科学仪器的数据。其中一个数据是频谱:本质上只是一个值列表,加上一个带有一些元数据的字典。一旦应用程序收集了数据,它就不会改变,因此列表和元数据都可以被认为是不可变的。
我想通过大量记忆在频谱上执行计算的函数来利用这一点。这是一个玩具示例:
class Spectrum(object):
def __init__(self, values, metadata):
self.values = values
self.metadata = metadata
# self.values and self.metadata should not change after this point.
@property
def first_value(self):
return self.values[0]
def multiply_by_constant(self, c):
return [c*x for x in self.values]
def double(self):
return self.multiply_by_constant(2)
我想要的是默认记住这些方法中的每一个。有没有什么方法(元类?)可以在不复制 one of these memoization decorators 并在任何地方写 @memoize 的情况下完成此任务?
【问题讨论】:
标签: python immutability