[Tutor] Implementation of list comparison operators
Peter Otten
__peter__ at web.de
Thu Jan 17 14:40:46 EST 2019
David Rock wrote:
>
>> On Jan 17, 2019, at 12:39, Peter Otten <__peter__ at web.de> wrote:
>>
>> One obscure detail of the implementation of list equality:
>>
>> In Python an object can be unequal to itself:
>>
>>>>> class A:
>> ... def __eq__(self, other): return False
>> ...
>>>>> a = A()
>>>>> a == a
>> False
>
> Isn’t this a bit artificial, though? The reason this is False is because
> you explicitly tell it to return False when using equality. That’s not
> the same thing as using __eq__ without overriding it’s behavior
> internally.
Sorry, I don't understand that argument. My point wasn't whether it's a good
idea to write objects that compare unequal to themselves -- such objects
already exist:
>>> nan = float("nan")
>>> nan == nan
False
I only warned that a list containing such an object does not meet the
intuitive expectation that list_a == list_b implies that all items in list_a
compare equal to the respective items in list_b.
More information about the Tutor
mailing list