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

Serhiy Storchaka storchaka at gmail.com
Thu Jun 21 15:53:02 EDT 2018

21.06.18 14:25, Jeroen Demeyer пише:
> 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

I think this is a bug. These bound methods can't be equal because they 
have different side effect.

The use case for using "is" for __self__ is described by the OP of 
issue1617161. I don't know use cases for using "==".

There is a related problem of hashing. Currently
bound methods are not hashable if __self__ is not hashable. This makes 
impossible using them as dict keys.

More information about the Python-Dev mailing list