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