【发布时间】:2019-12-12 18:37:06
【问题描述】:
我正在尝试为一些计算科学代码组合数据类、属性和 lru_caches:
from dataclasses import dataclass
from typing import Any
from functools import lru_cache
@dataclass
class F:
a: Any = 1
b: Any = 2
c: Any = 3
@property
@lru_cache(1)
def d(self):
print('Computing d')
return (self.a+self.b)**self.c
f=F()
print(f.d)
print(f.d)
我希望看到
Computing d
27
27
但得到
TypeError: unhashable type: 'F'
有没有办法解决这个问题?
【问题讨论】:
-
请查看我的答案的编辑并阅读引用的文档页面,以更好地了解您的问题发生的原因。
-
也许postprocessing on
init=falsefields 可以在这里为您提供帮助。 -
不用结合 proeprty 和 lru_cache,cached_property 可以工作:docs.python.org/3/library/…
标签: python properties lru python-dataclasses