"Nick Coghlan" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> Although, it looks like new-style classes currently don't apply this
> rule - you get the default hash implementation from object no matter
> what:
>
> Py> class NotHashable(object):
> ... def __cmp__(self, other):
> ... return 0
> ...
> Py> hash(NotHashable())
> 10297264
> Py> d = {NotHashable(): "Hi"}
> Py> d
> {<__main__.NotHashable object at 0x009D1FF0>: 'Hi'}
>
> That may be a bug rather than a feature :)
It does seem to conflict with the doc you quoted elsewhere in this thread:
http://www.python.org/dev/doc/devel/ref/customization.html
3.3.1 Basic customization
__hash__:
if it defines __cmp__() or __eq__() but not __hash__(), its instances will
not be usable as dictionary keys.
Assuming your test is with 2.4, I'd submit a bug report noting the
discrepancy.
Terry J. Reedy
--
http://mail.python.org/mailman/listinfo/python-list