我正在写一个关于温度的课程,我试图比较temp1> temp2等等。
这是其中一个应该处理比较的函数定义的代码的一部分。
def __eq__(self, other):
if self.__valid==True and other.__valid==True:
if self.__scale==other.__scale:
if self.__mag==other.__mag:
return True
else:
return False
#if self.__mag>other.__mag:
#return True
#else:
#return False
#if self.__mag>=other.__mag:
#return True
#else:
#return False
else:
if self.__scale=="C":
A=other.celsius()
if self.__mag==A.__mag:
return True
else:
return False
if self.__scale=="F":
B=other.fahrenheit()
if self.__mag==B.__mag:
return True
else:
return False
else:
return False
但是当我这样做时:
A=Temperature(37.0, "C")<br>
B=Temperature(30.0, "C")<br>
print(A>B)
我收到错误:
Traceback (most recent call last):
File "C:\Users\owner\Desktop\temperature.py", line 218, in <module>
print(A>B)
TypeError: unorderable types: Temperature() > Temperature()
我试图比较两者的数量,但这是一个持续存在的问题。
答案 0 :(得分:5)
__eq__()
仅处理相等性测试。您想要定义__le__()
(“≤”)和朋友。
您可以使用functools.total_ordering()
自动定义其他不等式运算符。