You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义Object类继承Turtle类调用shapesize报AttributeError求助

解决'Object' object has no attribute '_outlinewidth'错误

嘿,我一眼就发现问题所在了——你在Object类的__init__方法里犯了个典型的继承错误:手动给self赋值了一个全新的Turtle()实例,这直接跳过了父类的初始化流程,导致子类实例缺少了父类Turtle本该创建的内部属性(比如_outlinewidth)。

修正后的Object类代码

假设你的类定义在game_objects.py文件中:

import turtle
from turtle import Turtle

class Object(Turtle):
    def __init__(self, shape, color, x, y):
        # 先调用父类的构造函数,完成父类属性的初始化
        super().__init__()
        self.speed(0)
        self.shape(shape)
        self.color(color)
        self.penup()
        self.goto(x, y)

为什么这样能解决问题?

  • super().__init__()是Python中继承场景下初始化父类的标准方式,它会触发父类Turtle的构造函数,帮你完成所有必要的内部属性(包括_outlinewidth这类你看不到的属性)的初始化。
  • 你之前写的self = Turtle()相当于重新创建了一个独立的Turtle对象,但这个对象和当前子类的实例没有任何关联,Python自动创建的子类实例根本没经过父类的初始化流程,调用shapesize这类继承来的方法时,自然找不到需要的属性。

验证使用

在另一个文件中导入并使用Object类:

from game_objects import Object

pad1 = Object("square", "blue", -350, 0)
pad1.shapesize(stretch_len=1, stretch_wid=5)
# 现在可以正常运行啦!

内容的提问来源于stack exchange,提问作者Ashraf Ibrahim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 18:37:35