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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:03:31