[Python-Dev] About .append == .append
vano at mail.mipt.ru
Thu Jun 21 07:33:27 EDT 2018
First, tell us what problem you're solving.
Strictly speaking, bound methods don't have an unambiguous notion of
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
On 21.06.2018 14:25, Jeroen Demeyer wrote:
> Currently, we have:
> >>> .append == .append
> However, with a Python class:
> >>> class List(list):
> ... def append(self, x): super().append(x)
> >>> List().append == List().append
> 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
> >>> (10000).bit_length == (10000+0).bit_length
> 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?
> Python-Dev mailing list
> Python-Dev at python.org
More information about the Python-Dev