如何在python中定义自定义比较(0< mytype)?

时间:2016-05-29 20:43:09

标签: python

所以我现在(ab)使用python表示法来创建特定于域的语言。作为其中的一部分,我将重写比较函数以返回非布尔值。

因此,对于(mytype1< mytype2)和(mytype< 0),我可以通过定义__lt __()魔术方法轻松完成此操作。

但是,我无法弄清楚如何(0< mytype)这样做,因为可能需要在内置的int类型中定义魔术方法。似乎没有__rlt __()函数存在于数值运算中。

如何在lhs类型为int(在python3中)中添加对此比较的支持?

1 个答案:

答案 0 :(得分:4)

根据the documentation __lt__()的反映形式为__gt__()

  

这些方法没有交换参数版本(当左参数不支持操作但右参数支持时使用);相反,__lt__()__gt__()是彼此的反映,__le__()__ge__()是彼此的反映,而__eq__()__ne__()是他们自己的反思。如果操作数的类型不同,并且右操作数的类型是左操作数类型的直接或间接子类,则右操作数的反射方法具有优先级,否则左操作数的方法具有优先级。不考虑虚拟子类化。