在python中比较类中的变量

时间:2014-08-07 10:49:36

标签: python class python-3.x

我试图编写一个方法(),将矩形的大小(区域)与作为参数传递的另一个矩形的区域进行比较:

class Rectangle:
    def __init__(self, x, y):
       self.width = x
       self.height = y

    def area(self):
       a = self.width * self.height
       return a

    def __it__(self,second):
       return self.area < second.area

但我一直收到错误:

TypeError: unorderable types: Rectangle() < Rectangle()

我不确定如何解决这个问题

2 个答案:

答案 0 :(得分:4)

你有一个错字。它是__lt__,而不是__it__,您需要将area()称为函数,除非您将其设置为property

修复所有......

>>> class Rectangle:
...     def __init__(self, x, y):
...        self.width = x
...        self.height = y
...     def area(self):
...        a = self.width * self.height
...        return a
...     def __lt__(self,second):
...        return self.area() < second.area()
... 
>>> Rectangle(1,3) > Rectangle(4,5)
False

答案 1 :(得分:0)

区域是一种方法,你使用它就好像它是一个变量。添加parens应该修复它(如果你试图做的少于,它应该是__lt__):

def __lt__(self, second):
    return self.area() < second.area()