總訂貨量
當我們想要建立一個可訂購的類時,通常我們需要定義方法 _
_eq()__
,__lt__()
,__le__()
,__gt__()
和 __ge__()
。
應用於類的 total_ordering
裝飾器允許定義 __eq__()
,__lt__()
,__le__()
,__gt__()
和 __ge__()
之間只有一個,並且仍然允許該類的所有排序操作。
@total_ordering
class Employee:
...
def __eq__(self, other):
return ((self.surname, self.name) == (other.surname, other.name))
def __lt__(self, other):
return ((self.surname, self.name) < (other.surname, other.name))
裝飾器使用所提供方法和代數運算的組合來匯出其他比較方法。例如,如果我們定義 __lt__()
和 _
_eq()__
並且我們想要派生 __gt__()
,我們可以簡單地檢查 not
lt()and not
__eq()__
。
注意 :total_ordering
函式僅在 Python 2.7 之後可用。