Typeerror:无法解决的类型

时间:2014-04-22 02:44:09

标签: python class typeerror

我正在写一个关于温度的课程,我试图比较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()

我试图比较两者的数量,但这是一个持续存在的问题。

1 个答案:

答案 0 :(得分:5)

__eq__()仅处理相等性测试。您想要定义__le__()(“≤”)和朋友。

您可以使用functools.total_ordering()自动定义其他不等式运算符。