[Python-Dev] getting rid of default object.hash (SF 660098) (original) (raw)

Guido van Rossum guido at python.org
Mon Dec 22 16:32:15 EST 2003


>Since the default hash simply takes id() of the object, it's easy to >fix such code once the failure is understood though.

Jython 2.2a0 on java1.4.002 (JIT: null) Type "copyright", "credits" or "license" for more information. >>> class C: pass ... >>> id(C) 1 >>> hash(C) 9174506 >>> 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.

(I should add that this topic rose to my attention when I had to debug the issue in some code of my own -- I had a class whose eq was overridden but whose hash wasn't, and it was being used as a dict key... It is indeed a pain to debug this. :-( )

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



More information about the Python-Dev mailing list