[Python-Dev] Documentation Error for hash (original) (raw)
Matt Giuca matt.giuca at gmail.com
Fri Aug 29 00:00:06 CEST 2008
- Previous message: [Python-Dev] Documentation Error for __hash__
- Next message: [Python-Dev] Documentation Error for __hash__
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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>
- Previous message: [Python-Dev] Documentation Error for __hash__
- Next message: [Python-Dev] Documentation Error for __hash__
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]