__gt__ vs>依此类推

时间:2019-05-19 09:41:44

标签: python operators

某些python类具有一些__gt____lt__之类的运算符,它们是从fortran语言中命名的。

上述运算符与<>有什么区别?
使用__operators__比使用<>好吗?

2 个答案:

答案 0 :(得分: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),{{ 1}}呼叫x!=yx.__ne__(y)呼叫x>yx.__gt__(y)呼叫x>=y

Source

通常,人们在代码中使用运算符x.__ge__(y)等。但是您需要使用>及类似方法在自己的类上实现功能。

(几乎总是)不应在代码中直接使用__gt__方法,因为数据模型还定义了一些在这些方法之外处理的特殊情况。

例如,如果一个操作数未实现比较,则它会与交换的运算符进行反向比较:

__gt__

如果您需要“功能比较”,则应使用>>> (1).__gt__(2.5) NotImplemented >>> (2.5).__lt__(1) False >>> 1 > 2.5 False 模块:

operator

答案 1 :(得分:1)

它们之间没有区别。

何时应使用>

定期做事时,例如

>>> 80 > 70
True
>>> 

何时应使用gt

map ping或sort或其他情况下,没有lambda

>>> l = [1, 2, 3]
>>> list(map((2).__gt__, l))
[True, False, False]
>>> 

所以不需要:

>>> l = [1, 2, 3]
>>> list(map(lambda x: x < 2, l))
[True, False, False]
>>>