Python Turtle开发Pong游戏时Paddle对象无screen属性报错如何解决?
问题原因
你自定义的Paddle类继承了turtle.Turtle,但没有在子类构造方法中优先调用父类的构造方法,turtle.Turtle的内置属性(比如报错提到的screen)都是在父类构造逻辑中完成初始化的,你直接调用self.shape()等父类方法时,相关依赖属性还没有创建,就会触发属性不存在的报错。
另外你代码中match case分支写的是列表匹配规则,但你实际传参用的是元组,会导致匹配失败,默认走兜底逻辑。
修复方案
修改你的Paddle类代码如下:
class Paddle(turtle.Turtle): def __init__(self, color: str, shape: str =None, deltaMov=None, coordinates=None): # 优先调用父类构造方法,初始化内置属性 super().__init__() if shape: self.shape(shape) self.speed(0) self.color(color) self.penup() match coordinates: # 把列表匹配改成元组匹配,适配你传入的元组参数 case (int(x), int(y)): self.goto(x, y) case _: self.goto(0, 0) match deltaMov: # 同理把列表匹配改成元组匹配 case (int(x), int(y)) | (float(x), float(y)): self.dx = x self.dy = y self.originals = (x, y) case _: self.dx = 0 self.dy = 0
修改完成后即可正常运行Pong游戏逻辑。
内容的提问来源于stack exchange,提问作者Sun
相关产品推荐
相关产品推荐

