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 > Python-Dev at python.org > https://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: > https://mail.python.org/mailman/options/python-dev/vano%40mail.mipt.ru -- Regards, Ivan
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