Python游戏迷宫生成报错:AttributeError: Square类无square_type属性
错误排查与解决
核心问题
报错AttributeError: type object 'Square' has no attribute 'square_type'的直接原因:你把Square类本身赋值给了field数组的元素,而非创建Square类的实例对象。类本身属于type类型,不会拥有square_type这类实例属性,只有实例化后的对象才会携带这些属性。
修复步骤
修正field数组初始化逻辑
原代码循环赋值时大概率写的是:field[i][j] = Square # 错误:赋值的是类,不是实例必须改为创建实例:
field[i][j] = Square() # 正确:生成Square类的实例对象检查固定位置的实例赋值
手动设置固定位置时,确保用Square()创建实例,而非直接引用Square类。示例:# 正确写法:给固定位置赋值配置好的实例 field[0][0] = Square(square_type="start", angle=0, treasure=None)验证undefined_squares填充逻辑
确保undefined_squares列表中存储的是Square的实例对象,而非Square类本身。动态生成时,必须通过Square()创建后再加入列表。
额外优化建议
- 给Square类的
__init__方法设置属性默认值,避免实例化时遗漏参数引发新错误:class Square: def __init__(self, square_type="normal", angle=0, treasure=None): self.square_type = square_type self.angle = angle self.treasure = treasure - 测试时先单独打印单个Square实例的属性,确认实例化正确后再填充整个field数组。
内容的提问来源于stack exchange,提问作者Pavel Ermolenko
相关产品推荐
相关产品推荐

