我希望有人可以提供帮助。
我创建了一个带有功能的类,该类可以计算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
但是这完全使程序崩溃了,根本无法运行。
欢迎任何指导。 非常感谢。
答案 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: