總訂貨量

當我們想要建立一個可訂購的類時,通常我們需要定義方法 __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 之後可用。