我不断收到错误消息,说
AttributeError: 'NoneType' object has no attribute 'something'
我的代码太长,无法在此处发布。什么一般情况会导致这种情况AttributeError
,这NoneType
意味着什么,我如何缩小正在发生的事情?
None
。
我不断收到错误消息,说
AttributeError: 'NoneType' object has no attribute 'something'
我的代码太长,无法在此处发布。什么一般情况会导致这种情况AttributeError
,这NoneType
意味着什么,我如何缩小正在发生的事情?
None
。
Answers:
您有一个等于None的变量,并且您试图访问它的名为“ something”的属性。
foo = None
foo.something = 1
要么
foo = None
print foo.something
两者都会产生一个 AttributeError: 'NoneType'
None
。一个明确foo = None
的问题不太可能成为问题。它将是这样,foo = something()
并且您没有意识到something()
可能会None
在不成功或结果集为空或任何其他内容时返回。
这意味着您正在尝试访问的对象None
。None
是Null
python中的变量。这种类型的错误发生在您的代码上,就像这样。
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")
gddc是正确的,但添加了一个非常常见的示例:
您可以以递归形式调用此函数。在这种情况下,您可能会以空指针或结尾NoneType
。在这种情况下,您会收到此错误。因此,在访问该参数的属性之前,请检查它是否不是NoneType
。
if foo is not None:
建立估算器(sklearn)时,如果忘记在fit函数中返回self,则会得到相同的错误。
class ImputeLags(BaseEstimator, TransformerMixin):
def __init__(self, columns):
self.columns = columns
def fit(self, x, y=None):
""" do something """
def transfrom(self, x):
return x
AttributeError:'NoneType'对象没有属性'transform'?
添加return self
到拟合功能可修复该错误。
print
函数(或取决于版本的语句)以揭示存在此问题的代码中变量实际具有的实际值。