Name
__hash__
Synopsis
__hash__(self)
The
hash(
x
)
built-in function call, and using x as a
dictionary key (typically,
D
[
x
]
where D is a dictionary), call
x
.__hash__( ).
__hash__ must return a 32-bit
int such that
x
==
y implies
hash(
x
)==hash(
y
), and
must always return the same value for a given object.
When __hash__ is absent,
hash(
x
)
and using x as a dictionary key call
id(
x
)
instead, as long as __cmp__ and __eq__ are also absent.
Any x such that
hash(
x
)
returns a result, rather than raising an exception, is known as a
hashable
object. When
__hash__ is absent, but __cmp__ or __eq__ is present,
hash(
x
)
and using x as a dictionary key raise an
exception. In this case, x is not hashable
and cannot be a dictionary key.
You normally define __hash__ only for immutable
objects that also define __cmp__ and/or
__eq__. Note that, if there exists any
y such that
x
==
y, even if
y is of a different type, and both
x and y are
hashable, you must ensure that
hash(
x
)==hash(
y
).
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access