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/2019-May/157349.html below:

[Python-Dev] Definition of equality check behavior

[Python-Dev] Definition of equality check behaviorEthan Furman ethan at stoneleaf.us
Tue May 7 20:23:09 EDT 2019
On 05/07/2019 02:05 PM, Jordan Adler wrote:

> Specifically, a comparison between a primitive (int, str, float were
>  tested) and an object of a different type always return False,
>  instead of raising a NotImplementedError.  Consider `1 == '1'` as a
>  test case.

If the object of a different type doesn't support comparing to an int, str, or float then False is the correct answer.  On the other hand, if the object of a different type wants to compare equal to, say, ints then it will have to supply its own __eq__ method to return False/True as appropriate.


> Should the data model be adjusted to declare that primitive types are
>  expected to fallback to False

No, because they aren't.

> or should the cpython primitive type's __eq__ implementation fallback
>  to raise NotImplementedError?

No, because raising an error is not appropriate.  Did you mean `return NotImplemented`?  Because empirical evidence suggests that they do:

-------
class MyCustomInt():
     def __init__(self, value):
         self.value = value
     def __eq__(self, other):
         if isinstance(other, int):
             return self.value == other
         else:
             return NotImplemented
     def __ne__(self, other):
         if isinstance(other, int):
             return self.value != other
         else:
             return NotImplemented

core_int = 7
my_int = MyCustomInt(7)

print(core_int == my_int)  # True
print(my_int == core_int)  # True
-------

If the core types were not returning NotImplemented then the above would be False on the `core_int == my_int` line.

Hopefully this is clearer now?

--
~Ethan~
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