Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Unexpected behavior of clear() after clone() in turtle.py module #126399

Copy link
Copy link
Open
@Chaebin-Kim24

Description

@Chaebin-Kim24
Issue body actions

Unexpected behavior report

Unexpected behavior description:

Hello, I recently started teaching Python. I found turtle module interesting and I'm planning to use the module for deeper understanding of loop, condition, and function. I tried to simplify some turtle examples, just to show how for loop works. I cloned Turtle object, moved the clones to initial position, and cleared all Turtles before start drawing. However, clear() method did not work as I expected. Here is the code that I used.

from turtle import *

t1 = Turtle()
t2 = t1.clone()

t1.forward(100)
t2.right(90)
t2.forward(100)

t2.clear()

I expected t2.clear() to clear the trace of the cloned Turtle. Instead, t2.clear() erased the trace of the original Turtle, where the trace was drawn after the cloning.

I wanted to know what is going on, so I read the definition of clear() method, and the method seemed to delete all items in self.items. Also, the source code of forward() used self.currentLineItem when drawing. So I tracked items and currentLineItem in my code. Here are the results of the tracking.

from turtle import *

#t1.currentLineItem, t1.items, t2.currentLineItem, t2.items

t1 = Turtle()   #1, [1], None, None

t2 = t1.clone() #2, [1,2], 3, [1,2]

t1.forward(100) #2, [1,2], 3, [1,2]
t2.right(90)    #2, [1,2], 3, [1,2]
t2.forward(100) #2, [1,2], 3, [1,2]

t2.clear()      #2, [1,2], 4, [4]

So, t2 drew lines in 3, however, because 3 is not in t2.items, t2.clear() does not delete 3. Also, t1 drew lines in 2, and, because 2 is in t2.items, t2.clear() delete 2.

I think that the items of the cloned Turtle should be [1,3] instead of [1,2] after clone() is called.

CPython versions tested on:

3.12

Operating systems tested on:

Windows

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibPython modules in the Lib dirPython modules in the Lib dirtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error

    Projects

    Status

    No status
    Show more project fields

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.