Re-add two paragraphs that seem to have been lost during the merge from trunk.
This commit is contained in:
parent
a6c04bed1e
commit
db62967a46
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue