[Python-Dev] __eq__ vs hash

Daniel Krech eikeon at eikeon.com
Sat Apr 5 18:48:21 CEST 2008


On Apr 4, 2008, at 10:38 AM, Guido van Rossum wrote:
> On Fri, Apr 4, 2008 at 2:46 AM, Ralf Schmitt <schmir at gmail.com> wrote:
>> the news file for python 2.6 does not mention that you need to define
>> __hash__ in case you define __eq__ for a class.
>> This breaks some code (for me: mercurial and pyparsing).
>> Shouldn't this be documented somewhere (I also cannot find it in the
>> whatsnew file).
>> Well, technically this has always been the requirement.
>> What specific code breaks? Maybe we need to turn this into a warning
> in order to be more backwards compatible?

I think a warning would be nice. I've run into a number of places that 
are breaking due to the change. Including parts of the standard lib, 
in particular, unittest.TestSuite as used by nose [1].
There is already an open issue with patches for this in the issue 
tracker [2]. I've been running trunk with the patch installed and am 
able to get past the breakage due to the change. I don't believe the 
current patch is kicking out a warning however.
[1] http://code.google.com/p/python-nose/issues/detail?id=161
[2] http://bugs.python.org/issue2235


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /