Re: [Python-Dev] About [].append == [].append

2018年6月21日 04:42:35 -0700

First, tell us what problem you're solving.
Strictly speaking, bound methods don't have an unambiguous notion of equality: are they equal if they do the same thing, or of they do they same thing _on the same object_? The result that you're seeing is a consequence of that same dichotomy in the minds of the .__eq__ designers, and Python Zen advises "In the face of ambiguity, refuse the temptation to guess." -- which is what you're suggesting.
On 21.06.2018 14:25, Jeroen Demeyer wrote:
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
[email protected]
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: https://mail.python.org/mailman/options/python-dev/vano%40mail.mipt.ru
--
Regards,
Ivan
_______________________________________________
Python-Dev mailing list
[email protected]
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