Why am I getting a TypeError: 'int' object not callable in a micro:bit MicroPython program?
Why am I getting a TypeError: 'int' object not callable in a micro:bit MicroPython program?
我正试图为 micro:bit 制作某种 Boxel Rebound 游戏,我在 online web editor 编写代码。一切正常,直到我尝试实现跳跃。当我启动程序时,它工作正常,我在 REPL 中得到了我的调试信息:
Updating...
Isn't jumping
Updating...
Isn't jumping
Updating...
Isn't jumping
...
但是当我按下按钮 A 时,我得到
Traceback (most recent call last):
File "main.py", line 57, in <module>
TypeError: 'int' object isn't callable
这是我的代码:
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
的属性和方法(在您的 __init__
中有 self.jump = 0
)。这就是您的 player.jump()
正在使用的(虽然您希望它使用该方法)并且您显然不能将 int 作为方法调用。
更改两者之一的名称(属性或方法),它应该可以工作。
在classPlayer中你定义了成员变量和名为jump的函数。调用跳转方法时,您试图调用一个不可调用类型的整数。小心地重命名这两个成员之一。
我正试图为 micro:bit 制作某种 Boxel Rebound 游戏,我在 online web editor 编写代码。一切正常,直到我尝试实现跳跃。当我启动程序时,它工作正常,我在 REPL 中得到了我的调试信息:
Updating...
Isn't jumping
Updating...
Isn't jumping
Updating...
Isn't jumping
...
但是当我按下按钮 A 时,我得到
Traceback (most recent call last):
File "main.py", line 57, in <module>
TypeError: 'int' object isn't callable
这是我的代码:
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
的属性和方法(在您的 __init__
中有 self.jump = 0
)。这就是您的 player.jump()
正在使用的(虽然您希望它使用该方法)并且您显然不能将 int 作为方法调用。
更改两者之一的名称(属性或方法),它应该可以工作。
在classPlayer中你定义了成员变量和名为jump的函数。调用跳转方法时,您试图调用一个不可调用类型的整数。小心地重命名这两个成员之一。