Skip to content

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 的函数结果统一判空

相关资源

相关术语

相关课程

相关练习

← 返回语言