__gt__ vs > and so on

Per*_*ulf 1 python operators

some python classes have some operators such __gt__ or __lt__, They have been named from fortran language.

What's difference between above operators and < or > ?
Is't better to use __operators__ than < or > ?

MSe*_*ert 7

__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
Run Code Online (Sandbox Code Playgroud)

如果您需要“功能比较”,则应使用以下operator模块:

>>> from operator import gt
>>> gt(1, 2.5)
False
Run Code Online (Sandbox Code Playgroud)