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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:34:57