A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2014-July/135325.html below:

[Python-Dev] == on object tests identity in 3.x

[Python-Dev] == on object tests identity in 3.x [Python-Dev] == on object tests identity in 3.xAndreas Maier andreas.r.maier at gmx.de
Mon Jul 7 13:22:27 CEST 2014
While discussing Python issue #12067 
(http://bugs.python.org/issue12067#msg222442), I learned that Python 3.4 
implements '==' and '!=' on the object type such that if no special 
equality test operations are implemented in derived classes, there is a 
default implementation that tests for identity (as opposed to equality 
of the values).

The relevant code is in function do_richcompare() in Objects/object.c.

IMHO, that default implementation contradicts the definition that '==' 
and '!=' test for equality of the values of an object.

Python 2.x does not seem to have such a default implementation; == and 
!= raise an exception if attempted on objects that don't implement 
equality in derived classes.

I'd like to gather comments on this issue, specifically:

-> Can someone please elaborate what the reason for that is?

-> Where is the discrepancy between the documentation of == and its 
default implementation on object documented?

To me, a sensible default implementation for == on object would be (in 
Python):

   if v is w:
     return True;
   elif type(v) != type(w):
     return False
   else:
     raise ValueError("Equality cannot be determined in default 
implementation")

Andy
More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4