我想使用Numpy数组作为字段值,同时保持我的attrs
类可哈希。为此,我发现joblib的hash()
函数是对Numpy数组进行哈希的好方法。是否有可能继续使用attrs
的默认哈希函数,同时手动指定如何哈希每个字段,例如,使用类似
import attrs
import numpy as np
from joblib import hash as jbhash
@attrs.frozen
class MyClass:
field: np.ndarray = attrs.field(hash=jbhash) # I know this doesn't work at the moment
还是我必须自己写__hash__()
?
指出:
- 为了简洁,我省略了一个转换器,使
field
不可写) - 上下文:我的目标是使用这个数据类作为使用
functools.lru_cache()
记忆的函数的参数。
恐怕这目前是不可能的,主要是因为没有人要求过。哈希通常是人们不关心的东西,直到它被破坏…
功能请求被跟踪到https://github.com/python-attrs/attrs/issues/1076