Python:属性错误 – 'NoneType'对象没有属性'something'

我不断收到一个错误,说

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

我的代码太长了,不能在这里发布,但是我想知道是否有人可以给出一般情况会导致这个'AttributeError', 'NoneType'应该是什么意思? (通常你会收到一些代码出错的对象的名称,但是由于它给了我'NoneType',我不确定如何缩小它的行为,除了第#行以外)

NoneType意味着不是你认为你正在使用的任何类或对象的实例,而是实际上None 。 这通常意味着上面的调用或函数调用失败或返回意外的结果。

你有一个等于None的variables,你试图访问它的一个属性,叫做'something'。

 foo = None foo.something = 1 

要么

 foo = None print foo.something 

两者都会产生一个AttributeError: 'NoneType'

其他人已经解释了什么是无types的,并且是一种常见的方法(即不能从函数返回值)。

另一个常见的原因,你有None你不指望它是一个就地操作的可变对象的分配。 例如:

 mylist = mylist.sort() 

列表的sort()方法就地sorting列表,即mylist被修改。 但方法的实际返回值是None而不是列表sorting。 所以你刚才把None分配给mylist 。 如果你接下来要做的话, mylist.append(1) Python会给你这个错误。

NoneType是值None的types。 在这种情况下,variableslifetime的值为None

发生这种情况的常见方法是调用一个缺lessreturn的函数。

然而,有无数其他方式可以将variables设置为无。

考虑下面的代码。

 def return_something(someint): if someint > 5: return someint y = return_something(2) y.real() 

这会给你的错误

AttributeError:'NoneType'对象没有属性'real'

所以点如下。

  1. 在代码中,函数或类方法不返回任何内容或返回None
  2. 然后您尝试访问该返回的对象(即无)的属性,导致错误消息。