Позволяет реализовать проверку на неравенство для экземпляров пользовательских типов.
object.__ne__(self, other)
self -- Ссылка на экземпляр.
other -- Объект с которым следует произвести сравнение (справа от оператора сравнения).

Метод для реализации «богатого сравнения». ne от англ. «not equal» — не равно.

Метод может возбудить исключение NotImplemented, если сравнение для указанной пары аргументов не реализовано.
В соответствии с договорённостью в случае успешного сравнения возвращает True, либо False. Однако, может возвращать и любое другое значение, таким образом, если результат сравнения будет использован в контексте Булева типа (например, в условии if), Питон произведёт вызов bool() для интерпретации данного значения.

    class Moon:

def __ne__(self, other):
print('moon ne')
return self is not other


class Earth:

def __ne__(self, other):
print('earth ne')
return self is not other


my_moon = Moon()
my_earth = Earth()

is_ne = (my_moon != my_earth) # moon ne
is_ne # True
is_ne = (my_earth != my_moon) # earth ne
is_ne # True

is_ne = (my_earth != my_earth) # earth ne
is_ne # False

+py3.4 По умолчанию метод делегирует управление методу object.__eq__(), инвертируя результат, если только не было поднято NotImplemented.

-py3.4 Между различными операторами сравнения нет подразумеваемых взаимосвязей. Так истинность (x< y or x==y) не подразумевает x<=y. Поэтому, при определении __ne__() также необходимо определить и object.__eq__() для того чтобы операторы вели себя ожидаемым образом.

Не существует «перевёрнутых» методов, которые могли бы использоваться автоматически, если левый аргумент не поддерживает вызванную операцию, а правый поддерживает. Вместо этого обычно считают зеркальными __ne__() и __eq__() . +py3.4 Если операнды имеют различные типы и тип правого операнда является прямым или косвенным наследником типа левого операнда о метод-отражение правого операнда имеет приоритет, в иных случаях приоритет остаётся у метода левого операнда. При этом виртуальное наследование не учитывается.

Для автоматического генерирования операций упорядочивания по единой базовой операции можно использовать functools.total_ordering().

Для получения дополнительной важной информации об использовании «богатого сравнения» при создании объектов, поддерживающих хеширование, которые могут использоваться в качестве ключей в словарях смотрите object.__hash__().

См. также другие методы для реализации «богатого сравнения»:


Синонимы поиска: неравенство, <>, notequal

Нет обсуждений для отображения.
Если у вас есть, что сказать, можете представиться и исправить ситуацию.