[Python-Dev] Documentation Error for hash (original) (raw)

Matt Giuca matt.giuca at gmail.com
Fri Aug 29 00:00:06 CEST 2008


This may have been true for old style classes, but as new style classes inherit a default hash from object - mutable objects will be usable as dictionary keys (hashed on identity) unless they implement a hash method that raises a type error.

I always thought this was a bug in new-style classes (due to the fact that, as you say, they inherit hash from object whether it's wanted or not). However, it seems to be fixed in Python 3.0. So this documentation is only "wrong" for Python 2.x branch.

See:

Python 2.6b3+ (trunk:66055, Aug 29 2008, 07:50:39) [GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2 Type "help", "copyright", "credits" or "license" for more information.

class X(object): ... def eq(self, other): ... return True ... x = X() hash(x) -1211564180

versus

Python 3.0b3+ (py3k:66055M, Aug 29 2008, 07:52:23) [GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2 Type "help", "copyright", "credits" or "license" for more information.

class X(object): ... def eq(self, other): ... return True ... x = X() hash(x) Traceback (most recent call last): File "", line 1, in TypeError: unhashable type: 'X'

Matt -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20080829/bec02062/attachment.htm>



More information about the Python-Dev mailing list