python中的Functools模塊有助於實現高階函數。高階函數是調用其他函數的從屬函數。 Total_ordering提供了豐富的類比較方法,這些方法可幫助比較類而不顯式定義其函數。因此,它有助於代碼的冗餘。
六種豐富的類比較方法是:
- object.__lt__(self, other)
- object.__le__(self, other)
- object.__eq__(self, other)
- object.__ne__(self, other)
- object.__gt__(self, other)
- object.__ge__(self, other)
實現這些比較方法有兩個基本條件:
- 必須從lt(小於),le(小於或等於),gt(大於)或ge(大於或等於)中定義至少一種比較方法。
- 還必須定義eq函數。
例:
from functools import total_ordering
@total_ordering
class Students:
def __init__(self, cgpa):
self.cgpa = cgpa
def __lt__(self, other):
return self.cgpa<other.cgpa
def __eq__(self, other):
return self.cgpa == other.cgpa
def __le__(self, other):
return self.cgpa<= other.cgpa
def __ge__(self, other):
return self.cgpa>= other.cgpa
def __ne__(self, other):
return self.cgpa != other.cgpa
Arjun = Students(8.6)
Ram = Students(7.5)
print(Arjun.__lt__(Ram))
print(Arjun.__le__(Ram))
print(Arjun.__gt__(Ram))
print(Arjun.__ge__(Ram))
print(Arjun.__eq__(Ram))
print(Arjun.__ne__(Ram))
輸出
False False True True False True
注意:自從__gt__
方法未實現,它顯示“不
範例2:
from functools import total_ordering
@total_ordering
class num:
def __init__(self, value):
self.value = value
def __lt__(self, other):
return self.value < other.value
def __eq__(self, other):
# Changing the functionality
# of equality operator
return self.value != other.value
# Driver code
print(num(2) < num(3))
print(num(2) > num(3))
print(num(3) == num(3))
print(num(3) == num(5))
輸出:
True False False True
相關用法
- Python functools.wraps()用法及代碼示例
- Python Functools update_wrapper()用法及代碼示例
- Python Functools用法及代碼示例
- Python Functools lru_cache()用法及代碼示例
- Python Functools cached_property()用法及代碼示例
注:本文由純淨天空篩選整理自sathiyajith19大神的英文原創作品 Python Functools – total_ordering()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。