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

Python类中使用self关键字出现Unresolved reference问题求助

问题原因与解决方法

你的错误核心是把实例相关的代码写在了类的顶层作用域,而非__init__实例方法内部:

  • self是实例方法的专属参数,仅在类的实例方法(比如__init__)中有效,类顶层属于类的静态作用域,不存在self这个变量,所以PyCharm会提示未解析引用。
  • 另外,你原来定义的pad_body是类属性,会被所有Pad实例共享,这显然不符合每个Pad有独立乌龟对象的需求。

修正后的代码

from turtle import Turtle


class Pad:
    def __init__(self, is_player):
        self.is_player = is_player
        # 把pad_body的创建和配置移到__init__内部,作为实例属性
        self.pad_body = Turtle()
        self.pad_body.penup()
        self.pad_body.shape("square")
        self.pad_body.shapesize(4, 1, 0)
        self.pad_body.color("white")
        
        # 现在可以正常访问self.is_player了
        if self.is_player:
            self.pad_body.setposition(-480, 0)
        else:
            self.pad_body.setposition(480, 0)

关键要点

  • 所有和实例绑定的属性(比如每个Pad自己的乌龟对象、实例的状态is_player),以及实例初始化逻辑,都必须放在__init__这类实例方法里。
  • self的作用是指代当前正在创建的实例,只有在实例方法内部才能使用它来访问实例的属性和方法。
  • 类顶层定义的变量是类属性,会被所有实例共享,除非你明确需要共享状态,否则不要把实例专属的逻辑放在类顶层。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:06:26