我需要設計支持某種不確定性(或者野性字符,如果願意的話)它的組件的對象。 這項工作是在Python中完成的。散列不確定對象
考慮下面的類
class C():
def __init__(self, p1):
self.p1 = p1
屬性p1
可以是 「X」, 「Y」, 「Z」,但有時 「X或Y」,或任何其他組合。
它是必需的是,如果c1
p1
是 'x' 和的c2
p1
是 '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
對不起,我沒有完全讀你的問題(和'選項1'應該真的是我的回答評論)。更新了我的答案。 – phihag
我認爲你不應該爲此使用平等。 – katrielalex