我一直得到一个错误,说
AttributeError: 'NoneType' object has no attribute 'something'
我的代码太长了,不能在这里发布。什么样的场景会导致这个AttributeError, NoneType是什么意思,我该如何缩小范围?
我一直得到一个错误,说
AttributeError: 'NoneType' object has no attribute 'something'
我的代码太长了,不能在这里发布。什么样的场景会导致这个AttributeError, NoneType是什么意思,我该如何缩小范围?
当前回答
考虑下面的代码。
def return_something(someint):
if someint > 5:
return someint
y = return_something(2)
y.real()
这就会给出误差
AttributeError: 'NoneType'对象没有'real'属性
点如下所示。
在代码中,函数或类方法不返回任何东西或返回None 然后,您尝试访问该返回对象的属性(该属性为None),从而导致错误消息。
其他回答
这里没有一个答案是正确的。我有这样一个场景:
def my_method():
if condition == 'whatever':
....
return 'something'
else:
return None
answer = my_method()
if answer == None:
print('Empty')
else:
print('Not empty')
错误如下:
File "/usr/local/lib/python3.9/site-packages/gitlab/base.py", line 105, in __eq__
if self.get_id() and other.get_id():
AttributeError: 'NoneType' object has no attribute 'get_id'
在这种情况下,你不能用==测试是否等于None。为了修复它,我把它改为使用:
if answer is None:
print('Empty')
else:
print('Not empty')
如果在Flask应用程序中注释掉HTML,就会出现这个错误。这里qual.date_expiry的值是None:
<!-- <td>{{ qual.date_expiry.date() }}</td> -->
删除或修复这一行:
<td>{% if qual.date_attained != None %} {{ qual.date_attained.date() }} {% endif %} </td>
它表示您试图访问的对象为None。None是python中的Null变量。 这种类型的错误发生在你的代码是这样的。
x1 = None
print(x1.something)
#or
x1 = None
x1.someother = "Hellow world"
#or
x1 = None
x1.some_func()
# you can avoid some of these error by adding this kind of check
if(x1 is not None):
... Do something here
else:
print("X1 variable is Null or None")
考虑下面的代码。
def return_something(someint):
if someint > 5:
return someint
y = return_something(2)
y.real()
这就会给出误差
AttributeError: 'NoneType'对象没有'real'属性
点如下所示。
在代码中,函数或类方法不返回任何东西或返回None 然后,您尝试访问该返回对象的属性(该属性为None),从而导致错误消息。
“NoneType”为None值的类型。在本例中,变量生命周期的值为None。
实现这种情况的常见方法是调用一个缺少返回值的函数。
然而,还有无数种其他方法可以将变量设置为None。