Python &引用;类型错误:';int';对象不可调用";此代码中的错误

Python &引用;类型错误:';int';对象不可调用";此代码中的错误,python,pygame,Python,Pygame,下面的代码给了我这个错误,我感到困惑。抱歉,如果我问错了问题,我是新来的,但我认为这符合指导原则。图像将移动 在后台,我一释放钥匙,它就会给我这个错误并崩溃 Traceback (most recent call last): File "C:\Users\Samga_000\Desktop\game\game.py", line 89, in <module> rungame() File "C:\Users\Samga_000\Desktop\game\game.

下面的代码给了我这个错误,我感到困惑。抱歉,如果我问错了问题,我是新来的,但我认为这符合指导原则。图像将移动 在后台,我一释放钥匙,它就会给我这个错误并崩溃

Traceback (most recent call last):
  File "C:\Users\Samga_000\Desktop\game\game.py", line 89, in <module>
    rungame()
  File "C:\Users\Samga_000\Desktop\game\game.py", line 79, in rungame
    p.still()
TypeError: 'int' object is not callable

Player。仍然是一个布尔值,分配在这里:

class Player(pygame.sprite.Sprite):
    def __init__(self):
        # ...
        self.still = True
您不能调用布尔值,因为它不是函数,因为您在此处尝试:

p = Player()
# ...

            p.still()

Player。仍然是一个布尔值,分配在这里:

class Player(pygame.sprite.Sprite):
    def __init__(self):
        # ...
        self.still = True
您不能调用布尔值,因为它不是函数,因为您在此处尝试:

p = Player()
# ...

            p.still()

这与本文讨论的问题基本相同

您的问题是您有一个实例变量,
仍然
,与您的方法同名。当您执行p.still()时,Python将p.still解释为尝试访问变量而不是方法,然后尝试“调用”该变量

解决方案是重命名方法或变量。要使代码正常工作,只需更改其中一个。但是,良好的编程实践可能会说,您应该同时改变这两个方面

由于变量是一个标志,指示播放器是否静止,因此可以将其名称更改为
is\u still
。这是一个更具描述性的名称,它明确了变量的含义


对于该方法,您可以将其重命名为
set_still
mark_still
,以指示它正在更改播放机的状态。或者结合上述对变量名的更改,您可以使方法名
set\u仍然是
,以明确您正在设置的变量。

这本质上与本文讨论的问题相同

您的问题是您有一个实例变量,
仍然
,与您的方法同名。当您执行p.still()时,Python将p.still解释为尝试访问变量而不是方法,然后尝试“调用”该变量

解决方案是重命名方法或变量。要使代码正常工作,只需更改其中一个。但是,良好的编程实践可能会说,您应该同时改变这两个方面

由于变量是一个标志,指示播放器是否静止,因此可以将其名称更改为
is\u still
。这是一个更具描述性的名称,它明确了变量的含义


对于该方法,您可以将其重命名为
set_still
mark_still
,以指示它正在更改播放机的状态。或者结合上面对变量名的更改,您可以使方法名
set\u仍然是
,以明确您正在设置的变量。

我将“self.still=True”更改为“self.still=1”,现在它给了我“TypeError:'int'object is not callable”,这就是您最初声称的错误,而且
1
仍然不是一个函数!我将“self.still=True”改为“self.still=1”,现在它给了我“TypeError:“int”对象不可调用”这就是您最初声称的错误,并且
1
仍然不是函数!另请注意,
move
中的
if-else
块是多余的。您正在将
if self.still=0
设置在
if self.still==0
行的正上方,因此
if
将始终为真。
if else
中的
if else
块是多余的。您正将
if self.still==0
设置在
if self.still==0
行的正上方,因此
if
始终为真。