2010-01-11 27 views

回答

13

是的,只要你还定义__eq__(和大概__ne__! - )一致。 IOW,没关系,只要你没问题,a==b的含义与a is b完全一样! - )

+1

谢谢。你的第二句话很好地阐明了它。 – 2010-01-11 05:42:39

6

对于大多数Python类,这是默认行为。难以置信的原因是有一个很好的理由:它们是可变的集合。

对于集合,基于它们的内容相等具有相等关系(由__eq__()定义)是实际的。这和__hash__()要求平等的要求,当然会使得__hash__()可变,这对于包含这些对象的集合来说将是可怕的。

所以你可以做到这一点,但它会花费你基于内容的平等关系。