Метод __gt__
является реализацией >
, аналогично другие операторы сравнения имеют аналогичные методы:
object.__lt__(self, other)
object.__le__(self, other)
object.__eq__(self, other)
object.__ne__(self, other)
object.__gt__(self, other)
object.__ge__(self, other)
Это так называемые методы «богатого сравнения». Соответствие между символами оператора и именами методов выглядит следующим образом: x<y
звонки x.__lt__(y)
, x<=y
звонки x.__le__(y)
, x==y
звонки x.__eq__(y)
, x!=y
звонки x.__ne__(y)
, x>y
звонки x.__gt__(y)
и x>=y
звонит x.__ge__(y)
.
Источник
Обычно в коде используются операторы >
и т. Д. Но вам нужно использовать __gt__
и аналогичные для реализации функциональности на собственных классах.
Вы (почти всегда) не должны использовать методы __gt__
непосредственно в своем коде, потому что модель данных также определяет некоторые особые случаи, которые обрабатываются вне этих методов.
Например, если один операнд не реализует сравнение, он пытается выполнить обратное сравнение с замененными операторами:
>>> (1).__gt__(2.5)
NotImplemented
>>> (2.5).__lt__(1)
False
>>> 1 > 2.5
False
Если вам когда-либо понадобится «функциональное сравнение», вы должны использовать модуль operator
:
>>> from operator import gt
>>> gt(1, 2.5)
False