[Python-Dev] 'unhashable type' and new style classes
Thomas Heller
theller@python.net
30 Dec 2002 18:21:37 +0100
Guido van Rossum <guido@python.org> writes:
> > 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.
Why doesn't the default implementation raise a TypeError (or be NULL),
and the immutable types override this?
>
> Can you add a SF entry and assign it to me? Any insight you might
> have in the matter would be appreciated.
Sure.
Thomas