2013-12-15 56 views
1

我想在Python中覆蓋所有比較運算符(==,!=,<,< =,>,> =),我想盡我所能做到最少。從邏輯角度來看,定義兩個任何運算符(不包括對:==和!=,<和> =,>和< =)就足夠了。在Python中重寫這些運算符的最小集合是什麼?這是足夠的嗎?最小的一組比較運算符覆蓋

class MyInt: 
    __init__(self, num): 
     self.num = num 
    __eq__(self, other): 
     return self.num == other.num 
    __lt__(self, other): 
     return self.num < other.num 

回答

5

functools.total_ordering修飾器應用於您的班級。從它的文檔:

類必須定義一個__lt__()__le__()__gt__(),或 __ge__()。另外,班級應該提供一個__eq__()方法。