TypeError:“方法”和“ int”的实例之间不支持“>”

时间:2018-10-20 13:02:40

标签: python comparison-operators

我希望有人可以提供帮助。

我创建了一个带有功能的类,该类可以计算4个汽车列表中的汽车总数。

在另一个脚本中,我正在创建界面,并想说“ totalCars”的答案是否大于零,然后继续提供一种汽车。

但是,当我这样做时,会出现此错误:TypeError: '>' not supported between instances of 'method' and 'int'。这是代码:

def totalCars(self):
    p = len(self.getPetrolCars())
    e = len(self.getElectricCars())
    d = len(self.getDieselCars())
    h = len(self.getHybridCars())
    totalCars = int(p) + int(e) + int(d) + int(h)
    return totalCars 

并且在界面脚本上有:

while self.totalCars > 0:

要解决这个问题,我尝试使用布尔值,如下所示:

def totalCars(self):
    p = len(self.getPetrolCars())
    e = len(self.getElectricCars())
    d = len(self.getDieselCars())
    h = len(self.getHybridCars())
    totalCars = int(p) + int(e) + int(d) + int(h)
    if totalCars > 0:
        return True 

在应用脚本上,我有:

 while self.totalCars is True

但是这完全使程序崩溃了,根本无法运行。

欢迎任何指导。 非常感谢。

3 个答案:

答案 0 :(得分:2)

这是因为self.totalCars是一种方法,您需要调用,通过在末尾添加一对括号来获得它的返回值,如下所示:

while self.totalCars() > 0:
     #Insert the rest here

否则,如消息所示,您正在将一种方法与一个数字进行比较,那是行不通的。

无需添加布尔值,但是如果您坚持使用布尔值,则可以执行以下操作:

while self.totalCars():    #Will run if self.totalCars() RETURNS True

同样,这在您的原始代码中并没有真正起作用,因为您忘记了括号。

希望这会有所帮助。

答案 1 :(得分:0)

最后一个问题,您只需要这个:

while self.totalCars():

调用该方法,但不要检查True是否返回布尔值。

def totalCars(self):

应以

结尾
return False

您还应该在下次指出错误的确切位置。

答案 2 :(得分:0)

如果没有调用方法,则不会返回任何数据,因此无法将其与数字进行比较。

您只需添加"()"

while self.totalCars > 0:
=> while self.totalCars() > 0: