所以,我正在尝试使用turtle模块在python中制作一个太空战争游戏。我负责显示玩家的生命数。我只需要帮助来显示生命数量,但要使其真正发挥作用,我想我自己就可以做到。我创建了一个名为“game2”的类。我使用 def 赋予它一些属性并添加玩家生命。但是当我尝试某些操作时,我收到此错误: 回溯(最近一次调用最后一次): 文件“C:\Users\HUAWEI\OneDrive\Desktop\Space War est of space war.py”,第 225 行,位于 game2.show_lives() 类型错误:game2.show_lives() 缺少 1 个必需的位置参数:'self'
有关更多详细信息,我使用 IDLE Python 3.11.5 64 位,如果这有帮助的话。
这是我尝试过的。 类游戏2(): def init(自身): 自己的生命= 3
def show_lives(self):
self.pen.undo()
msg2 = "Lives: %l" % (self.lives)
self.pen.penup()
self.pen.goto(-200, 310)
self.pen.write(msg2, font=("Arial", 16, "normal"))
game2.show_lives()
我本来希望它显示“Lives:”,但它没有。相反,我遇到了这个错误:
回溯(最近一次调用最后一次): 文件“C:\Users\HUAWEI\OneDrive\Desktop\Space War est of space war.py”,第 225 行,位于 game2.show_lives() 类型错误:game2.show_lives() 缺少 1 个必需的位置参数:'self'
问题是你没有初始化
game2
类。
首先,
game2
类应该有相应的__init__(self)
函数。这是一个问题,因为类 __init__(self)
中没有 game2
函数。相反,只有一个 init(self)
函数。
如果您希望
init(self)
函数为 __init__(self)
,那么您应该将该函数的名称更改为 __init__(self)
。 __init__
是初始化类的函数的名称。
其次,通过调用
game2.show_lives()
,您实际上是在调用所谓的“静态方法”。这是因为 game2
不是类的实例,而是类本身。您应该首先通过“像函数一样调用类”来初始化类。
例如,您可以这样做:
running_game2 = game2()
running_game2.show_lives()
现在
running_game2
是一个实例,而不是一个类。所以你可以调用
类函数 show_lives()
而不发送实例作为 self
。