[Python-Dev] Why should the default hash(x) == id(x)?

"Martin v. Löwis" martin at v.loewis.de
Sun Nov 6 11:08:22 CET 2005

Noam Raphael wrote:
> The alternative is to drop the __hash__ method of user-defined classes
> (as Guido already decided to do), and to make the default __eq__
> method compare the two objects' __dict__ and slot members.

The question then is what hash(x) would do. It seems that you expect
it then somehow not to return a value. However, under this patch,
the fallback implementation (use pointer as the hash) would be used,
which would preserve hash(x)==id(x).

> See the thread about default equality operator - Josiah Carlson posted
> there a metaclass implementing this equality operator.

This will likely cause a lot of breakage. Objects will compare equal
even though they conceptually are not, and even though they did not
compare equal in previous Python versions.


More information about the Python-Dev mailing list