2010-01-11 45 views

回答

13

是的,只要你還定義__eq__(和大概__ne__! - )一致。 IOW,沒關係,只要你沒問題,a==b的含義與a is b完全一樣! - )

+1

謝謝。你的第二句話很好地闡明瞭它。 – 2010-01-11 05:42:39

6

對於大多數Python類,這是默認行爲。難以置信的原因是有一個很好的理由:它們是可變的集合。

對於集合,基於它們的內容相等具有相等關係(由__eq__()定義)是實際的。這和__hash__()要求平等的要求,當然會使得__hash__()可變,這對於包含這些對象的集合來說將是可怕的。

所以你可以做到這一點,但它會花費你基於內容的平等關係。