__eq__ and __ne__

Shane Hathaway shane at zope.com
Tue Jul 8 12:48:23 EDT 2003


Jeremy Hylton wrote:
> On Tue, 2003-07-08 at 12:08, Shane Hathaway wrote:
> 
>>Tim Peters wrote:
>>
>>>Since the richcmp operators aren't constrained to return scalars, an attempt
>>>to define one in terms of the others seemed futile.  Instead they're 6
>>>independent methods.
>>
>>Ok.  Thanks for finding the docs.  I guess I'll stick to my boilerplate 
>>code.  I think some guidance should be added to the Python docs, though, 
>>explaining that whenever you define __eq__, you very likely ought to 
>>define __ne__ also.
> 
> I believe C++ has the same behavior when you overload logical
> operators.  So at least people familiar with the same behavior in other
> languages won't be surprised.

Actually, C++ generates a compiler error if you try to do that.  (See 
the attached program.)  Java doesn't run into this because it has a 
simpler interface: the only operator you can override is equals().  So 
in this case, C++ is fully explicit and Java is fully implicit, while 
Python makes a guess.  If we can't make it implicit like Java, then it 
seems preferable for Python to raise an exception, similar to C++, when 
you use the != operator with an instance that implements __eq__ but not 
__ne__.

Shane
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: test.cpp
URL: <http://mail.python.org/pipermail/python-list/attachments/20030708/f5648a39/attachment.ksh>


More information about the Python-list mailing list