[Python-Dev] 'unhashable type' and new style classes
Guido van Rossum
guido@python.org
Mon, 30 Dec 2002 10:27:45 -0500
> This code
>
> class X:
> def __cmp__(self, other):
> return 1
>
> c1 = X()
>
> d = {}
> d[c1] = None
>
> raises a TypeError, unhashable type, since the class does
> not define a __hash__ method.
>
> This error is no longer raised when X derives from object.
> Bug (or feature)?
It's something in between. :-(
I've been struggling with this since 2.2 and not found a good
solution. Built-in mutable types like list and dict deal with this by
having an explicit tp_hash slot that raises an exception.
Can you add a SF entry and assign it to me? Any insight you might
have in the matter would be appreciated.
I don't think I'll get to this before the 2.3a1 release.
--Guido van Rossum (home page: http://www.python.org/~guido/)