为什么我会收到一个打字错误:';int';对象在micro:bit MicroPython程序中不可调用?
我试图为micro:bit制作某种拳击篮板游戏,当时我正在编写代码。这一切都很好,直到我试图实现跳跃。当我启动程序时,它工作正常,我在REPL中收到调试消息:为什么我会收到一个打字错误:';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
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的成员变量和函数。调用跳转方法时,您试图调用一个不可调用类型的整数。只需小心地重命名这两个成员中的一个。对不起,这是一个愚蠢的错误。不用担心,它们会发生。