Marc-Andre Lemburg <m...@egenix.com> added the comment:

Terry J. Reedy wrote:
> 
> Terry J. Reedy <tjre...@udel.edu> added the comment:
> 
> Martin, I do not understand. The default hash is based on id (as is default 
> equality comparison), not value. Are you OK with hash values changing if the 
> 'value' changes? My understanding is that changing hash values for objects in 
> sets and dicts is bad, which is why mutable builtins with value-based 
> equality do not have hash values.

Hash values are based on the object values, not their id(). See the
various type implementations as reference. The id() is only used
as hash for objects which don't have a "value" (and thus cannot be
compared).

Given that we have the invariant "a==b => hash(a)==hash(b)" in Python,
it immediately follows that hash values for objects with comparison
method cannot have a lifetime - at least not within the same process
and, depending how you look at it, also not in multi-process
applications.

----------
nosy: +lemburg

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue13707>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to