(蟒蛇)“head”属性如何在此代码中使用 Turtle 类的方法?

(Python) How can the 'head' attribute use the method of the Turtle class in this code?

提问人:kannadaiski 提问时间:6/30/2023 最后编辑:kannadaiski 更新时间:6/30/2023 访问量:30

问:

from turtle import Turtle
starting_position = [(0, 0), (-20, 0), (-40, 0)]
move_distance = 20

class Snake:

    def __init__(self):
        self.segments = []  # attribute
        self.create_snake()  # method
        self.head = self.segments[0]

    def create_snake(self):
        for _ in starting_position:
            segment = Turtle(shape="square")
            segment.penup()
            segment.color('white')
            segment.goto(_)
            self.segments.append(segment)

    def move(self):
        for seg_number in range(len(self.segments)-1, 0, -1):
            new_x_pos = self.segments[seg_number - 1].xcor()
            new_y_pos = self.segments[seg_number - 1].ycor()
            self.segments[seg_number].goto(new_x_pos, new_y_pos)
        self.head.forward(20)

    def up(self):
        self.head.setheading(90)

我是一个初学者程序员,但我不太明白“属性”是如何在类中使用“自我”连接起来的。

在这段代码中,“self.head = self.segments[0]”,我不明白“self.segments”首先是如何成为 turtle 类中的对象的。

虽然是我写的代码,但我不知道“self.segments”如何使用“turtle”类的方法。

有人可以向我解释一下吗?

Python 对象 self

评论

0赞 Reporter 6/30/2023
您使用哪种编程语言?请在您的问题中添加适当的标签。
0赞 kannadaiski 6/30/2023
哦,我使用的是 Python 语言。我会编辑它,谢谢。
0赞 slothrop 6/30/2023
请注意,在该方法中,附加到的每个项目都是 的实例。因此,您可以在其上调用该类的任何方法。create_snakeself.segmentsTurtleself.segments[0]Turtle
0赞 kannadaiski 6/30/2023
你的意思是,如果项目是 Turtle 的实例,这是否意味着收集项目的“self.segments”也将是 Turtle 的实例?
1赞 kannadaiski 6/30/2023
哈哈。哇,我明白了!!谢谢伙计!!=-)

答: 暂无答案