[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/)