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

Python代码报AttributeError: 'list'对象无'x'属性,求错误排查

错误原因与修复方案

错误原因

你在snake_init函数中给snake_array添加的是包裹着Test实例的列表,而非直接添加Test实例。比如snake_array.append([Test(300, 300, "RIGHT")])这行代码,把Test对象放进列表后再添加到snake_array,导致snake_array[0]是一个列表,不是Test类的实例,因此没有x属性,触发AttributeError。

修复方案

方案1:直接添加Test实例(最常见需求)

去掉包裹Test实例的方括号,将Test对象直接加入snake_array:

class Test:
    def __init__(self, x, y, dir):
        self.x = x
        self.y = y
        self.dir = dir


def snake_init(snake_array):
    # 移除外层方括号,直接添加Test实例
    snake_array.append(Test(300, 300, "RIGHT"))
    snake_array.append(Test(301, 300, "RIGHT"))
    snake_array.append(Test(302, 300, "RIGHT"))
    print(snake_array[0].x)  # 现在可正常访问x属性


snake_array = []
snake_init(snake_array)

方案2:保留列表结构(若业务需要)

如果你的逻辑确实要求snake_array的每个元素是列表,访问时需要先取列表内的Test实例:

print(snake_array[0][0].x)  # 取第一个列表中的第一个Test实例的x属性

内容的提问来源于stack exchange,提问作者Hubert Pastusiak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:50:23