doc: Suggest to hash(tuple of attr) rather than XOR
Issue #28383: __hash__ documentation recommends naive XOR to combine but this is suboptimal. Update the doc to suggest to reuse the hash() method using a tuple, with an example.
This commit is contained in:
parent
bfbc29cb8f
commit
509476b370
|
@ -1305,11 +1305,14 @@ Basic customization
|
|||
|
||||
Called by built-in function :func:`hash` and for operations on members of
|
||||
hashed collections including :class:`set`, :class:`frozenset`, and
|
||||
:class:`dict`. :meth:`__hash__` should return an integer. The only
|
||||
required property is that objects which compare equal have the same hash
|
||||
value; it is advised to somehow mix together (e.g. using exclusive or) the
|
||||
hash values for the components of the object that also play a part in
|
||||
comparison of objects.
|
||||
:class:`dict`. :meth:`__hash__` should return an integer. The only required
|
||||
property is that objects which compare equal have the same hash value; it is
|
||||
advised to mix together the hash values of the components of the object that
|
||||
also play a part in comparison of objects by packing them into a tuple and
|
||||
hashing the tuple. Example::
|
||||
|
||||
def __hash__(self):
|
||||
return hash((self.name, self.nick, self.color))
|
||||
|
||||
.. note::
|
||||
|
||||
|
|
Loading…
Reference in New Issue