As I remember, __ne__ is implemented by default as  not __eq__() in the base for hashable classes. Among the reasons to have a separate __ne__ may be implementation efficiency.  Another is symmetry and completeness.

Read the docs about the minimum a class must to do be:

On Fri, Dec 27, 2019 at 12:00 PM Siddharth Prajosh <sprajosh@gmail.com> wrote:
Why do we need separate functions for == and != ?

Isn't this supposed to be negation of each other?
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-leave@python.org
Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/5M6RJNN5V7JPNOR7MF5ZGTSH7VKFI33D/
Code of Conduct: http://python.org/psf/codeofconduct/

Juancarlo Añez