On Fri, Dec 9, 2011 at 4:32 AM, Peter Otten <__pete...@web.de> wrote: > The only thing that has changed (in 2.7) is the algorithm to calculate the > hash value. The bits are rotated to turn the four least significant bits > into the most signicant ones. According to a comment in Objects/objects.c > the change leads to fewer hash collisions.
Interesting, but what I saw was this: >>> class C(object): def __init__(self, x): self.x = x def __eq__(self, other): return self.x == other.x >>> s=set() >>> c1=C(1) >>> s.add(c1) Traceback (most recent call last): File "<pyshell#163>", line 1, in <module> s.add(c1) TypeError: unhashable type: 'C' (This is in IDLE from Python 3.2 on Windows.) However, s.add(object()) works fine. So subclasses don't get that. Odd. Makes sense though - you can't get this unexpected behaviour as easily. ChrisA -- http://mail.python.org/mailman/listinfo/python-list