Pygame游戏开发出现NameError: sideways_target未定义问题求助
问题分析与解决办法
问题根源
你在ShipShooter类的_check_target_edges方法里直接调用sideways_target.check_edges(),但sideways_target并非当前作用域内的变量——你在__init__中创建的是实例属性self.sideways_target,类的方法必须通过self.前缀才能访问这类绑定在实例上的属性,否则解释器会认为你在引用一个未定义的变量,从而抛出NameError。
解决办法
修改_check_target_edges方法中的调用代码,为实例属性加上self.前缀:
def _check_target_edges(self): # 替换原错误调用 self.sideways_target.check_edges()
补充说明
在Python面向对象编程中,所有通过self.xxx定义的实例属性,都必须通过self.来访问。这是因为每个类实例的属性都是独立绑定在自身上的,脱离self前缀的话,解释器无法定位到对应的实例属性,自然会判定变量未定义。
内容的提问来源于stack exchange,提问作者KiddoPL
相关产品推荐
相关产品推荐

