Глава 7 · Глубокое погружение в Turtle
clone() — копируем состояние
Не «новая черепашка с нуля», а «точная копия существующей» — а дальше они полностью независимы.
clone() — ещё один способ получить вторую черепашку, но
принципиально другой: не «создать с нуля», а «скопировать состояние существующей».
Копия стартует с того же места
clone.py
import turtle
screen = turtle.Screen()
screen.setup(width=420, height=320)
original = turtle.Turtle()
original.color("#5B24F9")
original.penup()
original.goto(0, -100)
original.setheading(90)
copy = original.clone()
copy.color("#DB2777")
original.pendown()
original.left(30)
original.forward(160)
copy.pendown()
copy.right(30)
copy.forward(160)
screen.exitonclick()
Результат выполнения
clone_kod.py
original = turtle.Turtle()
original.color("#5B24F9")
original.penup(); original.goto(0, -100); original.pendown()
original.setheading(90)
copy = original.clone() # тот же цвет, та же позиция, тот же курс
copy.color("#DB2777") # меняем только цвет — чтобы отличить на рисунке
original.left(30)
original.forward(160)
copy.right(30)
copy.forward(160)
clone() ≠ ссылка на ту же черепашку
copy — полностью НОВЫЙ, независимый объект. Он начинает с теми же позицией, курсом и настройками, что и original в момент клонирования — но дальнейшие изменения одной черепашки никак не затрагивают другую, как мы уже видели с alice и bob.Когда это полезно
Представьте узор с несколькими одинаковыми лучами, но повёрнутыми под разными углами — вместо того, чтобы настраивать каждую черепашку с нуля, можно один раз настроить "эталонную" черепашку и клонировать её сколько угодно раз.
Практика: clone() и независимые копии
Модуль turtle открывает нативное окно Python — выполните локально в VS Code, PyCharm или Jupyter