为什么会出现AttributeError: 'NoneType'对象没有属性'something'?

471 投票
11 回答
1920616 浏览
提问于 2025-04-17 10:44

我收到了一个错误信息,上面写着

AttributeError: 'NoneType' object has no attribute 'something'

我该如何理解这个信息呢?

一般来说,什么情况可能会导致这样的 AttributeError,我该如何找到问题所在呢?


这是一个特殊的 AttributeError 情况。它需要单独处理,因为从代码中得到意外的 None 值有很多种方式,所以通常这是一个不同的问题;而对于其他的 AttributeError,问题可能只是属性名称不对。

想了解 None 和它的类型 NoneType,可以查看 什么是 None 值?什么是 'NoneType' 对象?

11 个回答

17

NoneType 是一种数据类型,它代表的值是 None。在这个例子中,变量 lifetime 的值就是 None

一个常见的情况是,当你调用一个没有 return 的函数时,就会出现这种情况。

不过,还有很多其他方法也可以让一个变量的值变成 None。

142

你有一个变量,它的值是None(也就是没有值),然后你想去访问它的一个属性,叫做'something'。

foo = None
foo.something = 1

或者

foo = None
print(foo.something)

这两种情况都会导致一个错误,叫做AttributeError: 'NoneType'

449

NoneType的意思是,你原本以为自己在使用某个类或对象的实例,但实际上你得到的是None。这通常意味着在之前的某个赋值或函数调用中出现了问题,导致它没有返回你预期的结果。

撰写回答