AttributeError:属性不存在
错误信息
'x' object has no attribute 'y'
快速摘要
你用 `obj.attr` 访问属性,但 `obj` 没有这个属性——可能是 `None`、类型不对,或属性名拼错了。
为什么发生
对象是
None,却访问它的属性(函数返回None没判断)属性或方法名拼写错误,如把
append写成apend对象类型不对,如对字符串调用了列表的方法
第三方库版本升级,某个属性被改名或移除
最小示例
✗ 错误代码
name = "Alice"
name.append("x")✓ 修复代码
name = ["Alice"]
name.append("x")字符串没有 .append() 方法——如果需要添加元素,应该用列表而不是字符串。
如何诊断
阅读错误信息,看是哪种类型的对象没有哪个属性
在出错前用
print(type(obj))确认对象类型用
dir(obj)查看对象实际有哪些属性
如何修复
访问前判空:
if obj is not None: obj.attr修正属性名拼写,与官方文档一致
确认对象类型正确,必要时做类型转换
如何预防
使用类型注解 + mypy 在编码时捕获属性错误
对可能返回
None的函数结果统一判空