Pygame类内调用其他函数变量报错:提示不存在self.tiles()
问题排查:Pygame中self.tiles不存在的报错
错误原因
你的代码里Level类的__init__方法存在关键错误:
self.setup_level = (level_data)
这行代码不是调用setup_level方法,而是把level_data赋值给了self.setup_level,直接覆盖了原本的方法定义。这导致初始化对象时,setup_level方法从未被执行,self.tiles这个Sprite组根本没被创建,所以调用self.tiles.draw()时会提示不存在该属性。
修复步骤
把__init__里的错误语句改成方法调用:
import pygame from tile import Tile class Level: def __init__(self,level_data,surface): self.display_surface = surface self.setup_level(level_data) # 修正为调用方法 def setup_level(self,layout): self.tiles = pygame.sprite.Group() for row in layout: print(row) def run(self): self.tiles.draw(self.display_surface)
额外提示
确保传入的level_data是符合预期的二维结构(比如包含多个行列表的嵌套列表),否则setup_level里的for row in layout可能会出现迭代错误。
内容的提问来源于stack exchange,提问作者nub
相关产品推荐
相关产品推荐

