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'
所以点如下。
- 在代码中,函数或类方法不返回任何内容或返回None
- 然后您尝试访问该返回的对象(即无)的属性,导致错误消息。