gpt4 book ai didi

python - 散列不确定的对象

转载 作者:太空宇宙 更新时间:2023-11-03 19:29:26 28 4
gpt4 key购买 nike

我需要设计支持某种不确定性(或通配符,如果您愿意的话)其组件的对象。这项工作是用 Python 完成的。

考虑下面的类

class C():
def __init__(self, p1):
self.p1 = p1

该属性(property)p1可以是“x”、“y”、“z”,但有时是“x 或 y”,或任何其他组合。

要求如果 p1c1是 'x' 且 p1c2是“x 或 y”,则 c1 == c2将返回True 。通过提供适当的 __eq__ 可以轻松实现这一点。功能。但是,这些对象还需要存储在集合中,因此我需要提供 __hash__功能。对于这种情况,您将如何计算哈希函数,例如 c1 == c2然后hash(c1) == hash(c2)

选项 1:对属性进行哈希处理

不好原因如下

c1 = C('x')
c2 = C('x or y or z')
c1 == c2 #True
hash(c1) == hash(c2)#False

最佳答案

您的平等标准不可传递,因此无效:

C('x') == C('x or y') == C('y')

但是

C('x') != C('y')

由于您可以构造一个等于所有其他元素的元素 C('x or y or z or a or ...'),因此是唯一满足 c1 == c2 ⇒ hash( c1) == hash(c2) 是一个常量,即

def __hash__(self):
return 0

关于python - 散列不确定的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6689935/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com