Currently, we have:

>>> [].append == [].append
False

However, with a Python class:

>>> class List(list):
...     def append(self, x): super().append(x)
>>> List().append == List().append
True

In the former case, __self__ is compared using "is" and in the latter case, it is compared using "==".

I think that comparing using "==" is the right thing to do because "is" is really an implementation detail. Consider

>>> (10000).bit_length == (10000).bit_length
True
>>> (10000).bit_length == (10000+0).bit_length
False

I guess that's also the reason why CPython internally rarely uses "is" for comparisons.

See also:
- https://bugs.python.org/issue1617161
- https://bugs.python.org/issue33925

Any opinions?


Jeroen.
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to