如何自定义attrs字段散列



我想使用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

最新更新