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
相关产品推荐
相关产品推荐

