TypeError:“球”对象不可调用?

时间:2020-04-28 23:03:50

标签: python python-3.x list oop

我正在做一个游戏,其中我拥有一门能发射空中球的加农炮,因此我创建了一个名为ball的类和一个名为balls的列表(显然)包含balls。每个球都有一个值,每次被弹丸击中时,其值都会递减1,因此,如果ball.value减小为1,则当击中该球时,该球将从列表中删除,并且另一个球必须进入。这是该代码:

for projectile in projectiles:
    for ball in balls:
        if hypot(ball.rec.center[0]-projectile.center[0],ball.rec.center[1]-projectile.center[1] ) < ball.radius:
            if ball.value == 1:
                balls.remove(ball)
                balls.append(ball((randint(1,SCREENWIDTH - 100),10),2,0))
            else:
                ball.shrink()
            projectiles.remove(projectile)
            break

当我这样做时,球死了的那一刻,我会收到一条消息:

TypeError: 'ball' object is not callable

但是当我在球列表初始化之后放置balls.append(ball((randint(1,SCREENWIDTH - 100),10),2,0))时,我没有出现任何错误,但是另一个球刚出现在屏幕上。 我试图改变环路与̶̶f̶o̶r̶ ̶b̶a̶l̶l̶o̶o̶n̶ ̶i̶n̶ ̶b̶a̶l̶l̶s̶̶以查看是否̶t̶h̶a̶t̶'̶s̶这个问题,但没有改善,̶相同̶p̶r̶o̶b̶l̶e̶m̶.̶

1 个答案:

答案 0 :(得分:0)

应该使用ball(x, y)命令创建ball类的实例。但是单词ball已经用于balls的元素。所以,让你循环 for b in balls。为类和类的实例使用相同的名称确实是一个非常糟糕的主意。