Re-add two paragraphs that seem to have been lost during the merge from trunk.

This commit is contained in:
Georg Brandl 2007-11-03 08:44:43 +00:00
parent a6c04bed1e
commit db62967a46
1 changed files with 13 additions and 4 deletions

View File

@ -1289,8 +1289,7 @@ Basic customization
instances are compared by object identity ("address"). See also the instances are compared by object identity ("address"). See also the
description of :meth:`__hash__` for some important notes on creating description of :meth:`__hash__` for some important notes on creating
:term:`hashable` objects which support custom comparison operations and are :term:`hashable` objects which support custom comparison operations and are
usable as dictionary keys. (Note: the restriction that exceptions are not usable as dictionary keys.
propagated by :meth:`__cmp__` has been removed since Python 1.5.)
.. method:: object.__hash__(self) .. method:: object.__hash__(self)
@ -1307,8 +1306,18 @@ Basic customization
(e.g., using exclusive or) the hash values for the components of the object that (e.g., using exclusive or) the hash values for the components of the object that
also play a part in comparison of objects. also play a part in comparison of objects.
:meth:`__hash__` may also return a long integer object; the 32-bit integer is If a class does not define a :meth:`__cmp__` or :meth:`__eq__` method it
then derived from the hash of that object. should not define a :meth:`__hash__` operation either; if it defines
:meth:`__cmp__` or :meth:`__eq__` but not :meth:`__hash__`, its instances
will not be usable as dictionary keys. If a class defines mutable objects
and implements a :meth:`__cmp__` or :meth:`__eq__` method, it should not
implement :meth:`__hash__`, since the dictionary implementation requires that
a key's hash value is immutable (if the object's hash value changes, it will
be in the wrong hash bucket).
User-defined classes have :meth:`__cmp__` and :meth:`__hash__` methods
by default; with them, all objects compare unequal and ``x.__hash__()``
returns ``id(x)``.
.. method:: object.__bool__(self) .. method:: object.__bool__(self)