[Python-Dev] getting rid of default object.__hash__ (SF 660098)

Guido van Rossum guido at python.org
Mon Dec 22 16:43:09 EST 2003

> > > I see, but then there should be probably be a different way to spell
> > > the default hash, because id is not a sensible option for Jython etc
> >
> >Ow, you're right.  I bet this is why object.__hash__ was introduced in
> >the first place.
> >
> >We're either back to square one, or we can add a __default_hash__ to
> >object which has the default hash implementation -- this isn't very
> >pretty but at least it works.
> yes, or hash should grow a keyword argument to get access to the default 
> impl, which would be id for CPython but not for all Python impls in 
> general. The problem is that in general it cannot be expected from Python 
> implementations to implement the default hash in terms of id because the 
> latter can be much more costly beacuse of its uniqueness constraints.

Hm, the keyword arg would be more work to implement in C, and I don't
really like the ad-hoc extension of the __hash__ signature -- it may
make subclasses think they have to support the keyword too.

(Overriding the __default_hash__ would be possible, but silly, and I
recommend not to support this; if this were Java I'd make it a final
method.  Can you make it final in Jython?)

--Guido van Rossum (home page: http://www.python.org/~guido/)

More information about the Python-Dev mailing list