为什么我会收到一个打字错误:';int';对象在micro:bit MicroPython程序中不可调用?

为什么我会收到一个打字错误:';int';对象在micro:bit MicroPython程序中不可调用?,python,typeerror,micropython,bbc-microbit,Python,Typeerror,Micropython,Bbc Microbit,我试图为micro:bit制作某种拳击篮板游戏,当时我正在编写代码。这一切都很好,直到我试图实现跳跃。当我启动程序时,它工作正常,我在REPL中收到调试消息: Updating... Isn't jumping Updating... Isn't jumping Updating... Isn't jumping ... 但当我按下按钮A时,我会 回溯(最近一次呼叫最后一次): 文件“main.py”,第57行,在 TypeError:“int”对象不可调用 这是我的代码: fr

我试图为micro:bit制作某种拳击篮板游戏,当时我正在编写代码。这一切都很好,直到我试图实现跳跃。当我启动程序时,它工作正常,我在REPL中收到调试消息:

Updating...
  Isn't jumping
Updating...
  Isn't jumping
Updating...
  Isn't jumping
...
但当我按下按钮A时,我会

回溯(最近一次呼叫最后一次):
文件“main.py”,第57行,在
TypeError:“int”对象不可调用
这是我的代码:

from microbit import *

def scroll(*args, **kwargs):
    for arg in args:
        print(arg, **kwargs)
        display.scroll(arg)

#scroll('Boxel rebound')

WIDTH  = 4
HEIGHT = 4

class Player:
    b = 9
    
    def __init__(self):
        self.x = 1
        self.y = HEIGHT
        
        self.is_jumping = False
        self.jump       = 0
    
    def update(self):
        print('Updating...')
        if self.is_jumping:
            print('  Is jumping')
            self.jump += 1
            self.x    += 1
        else:
            print('  Isn\'t jumping')
            if self.y > HEIGHT:
                self.y += 1
        if self.jump >= 2:
            self.is_jumping = False
        
    def show(self):
        display.set_pixel(
            self.x,
            self.y,
            self.__class__.b
        )
    
    def jump(self):
        if not self.is_jumping:
            self.is_jumping = True

player = Player()

while True:
    display.clear()
    player.update()
    player.show()
    
    if button_b.get_presses() > 0:
        break
    elif button_a.get_presses() > 0:#button_a.is_pressed():
        player.jump() # This raises the error
    
    sleep(200)
    
display.clear()

你的
Player
对象既有一个属性,又有一个名为
jump
的方法(在你的
\uuuuu init\uuuuu
中,你有
self.jump=0
)。这就是您的
player.jump()
正在使用的方法(而您希望它使用该方法),您显然不能将int作为方法调用


更改其中一个(属性或方法)的名称,应该可以使用。

在类Player中定义了名为jump的成员变量和函数。调用跳转方法时,您试图调用一个不可调用类型的整数。只需小心地重命名这两个成员中的一个。

对不起,这是一个愚蠢的错误。不用担心,它们会发生。