Python蛇形游戏开发遇AttributeError:'Snake'对象无segments属性
蛇形游戏AttributeError问题解决
在Udemy的Python课程中开发蛇形游戏,代码缩进正确且完全复制课程提供的代码,但程序运行时出现AttributeError,提示'Snake'对象没有'segments'属性。
Snake类代码
from turtle import Turtle STARTING_POSITIONS = [(0, 0), (-20, 0), (-40, 0)] MOVE_DISTANCE = 20 class Snake: def __int__(self): self.segments = [] self.create_snake() def create_snake(self): for position in STARTING_POSITIONS: new_segment = Turtle("square") new_segment.color("white") new_segment.penup() new_segment.goto(position) self.segments.append(new_segment) def move(self): for seg_num in range(len(self.segments) - 1, 0, -1): new_x = self.segments[seg_num - 1].xcor() new_y = self.segments[seg_num - 1].ycor() self.segments[seg_num].goto(new_x, new_y) self.segments[0].forward(MOVE_DISTANCE)
主文件代码
from turtle import Screen from snake import Snake import time screen = Screen() screen.setup(width=600, height=600) screen.title("Snake Game") screen.bgcolor("black") screen.tracer(0) snake = Snake() game_is_on = True while game_is_on: screen.update() time.sleep(0.1) snake.move() screen.exitonclick()
报错信息
Traceback (most recent call last): File "C:\PythonProjects\snake_game\main.py", line 17, in <module> snake.move() File "C:\PythonProjects\snake_game\snake.py", line 22, in move for seg_num in range(len(self.segments) - 1, 0, -1): AttributeError: 'Snake' object has no attribute 'segments'
问题原因与解决方法
问题出在Snake类的构造函数名称拼写错误:你将Python类的构造函数__init__误写成了__int__。由于构造函数名称不正确,创建Snake实例时不会执行初始化逻辑,self.segments从未被定义,调用move方法时自然找不到该属性。
只需将Snake类中的def __int__(self):修改为def __init__(self):,程序即可正常运行。
内容的提问来源于stack exchange,提问作者Damian
相关产品推荐
相关产品推荐

