所以我现在(ab)使用python表示法来创建特定于域的语言。作为其中的一部分,我将重写比较函数以返回非布尔值。
因此,对于(mytype1< mytype2)和(mytype< 0),我可以通过定义__lt __()魔术方法轻松完成此操作。
但是,我无法弄清楚如何(0< mytype)这样做,因为可能需要在内置的int类型中定义魔术方法。似乎没有__rlt __()函数存在于数值运算中。
如何在lhs类型为int(在python3中)中添加对此比较的支持?
答案 0 :(得分:4)
根据the documentation __lt__()
的反映形式为__gt__()
。
这些方法没有交换参数版本(当左参数不支持操作但右参数支持时使用);相反,
__lt__()
和__gt__()
是彼此的反映,__le__()
和__ge__()
是彼此的反映,而__eq__()
和__ne__()
是他们自己的反思。如果操作数的类型不同,并且右操作数的类型是左操作数类型的直接或间接子类,则右操作数的反射方法具有优先级,否则左操作数的方法具有优先级。不考虑虚拟子类化。