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
相关产品推荐
相关产品推荐

