というエラーが表示され続けます
AttributeError: 'NoneType' object has no attribute 'something'
私が持っているコードは長すぎてここに投稿できません。これを引き起こす一般的なシナリオは何ですか?それは何を意味しAttributeError
、何がNoneType
起こっているのかを絞り込むにはどうすればよいですか?
というエラーが表示され続けます
AttributeError: 'NoneType' object has no attribute 'something'
私が持っているコードは長すぎてここに投稿できません。これを引き起こす一般的なシナリオは何ですか?それは何を意味しAttributeError
、何がNoneType
起こっているのかを絞り込むにはどうすればよいですか?
NoneType は、作業していると思われる Class または Object のインスタンスの代わりに、実際に を持っていることを意味しますNone
。これは通常、上記の割り当てまたは関数の呼び出しが失敗したか、予期しない結果が返されたことを意味します。
None に等しい変数があり、「何か」と呼ばれるその属性にアクセスしようとしています。
foo = None
foo.something = 1
また
foo = None
print(foo.something)
どちらもAttributeError: 'NoneType'
他の人は、それが何でNoneType
あるか、そしてそれで終わる一般的な方法 (つまり、関数から値を返さない) を説明しています。
予期しない別の一般的な理由はNone
、可変オブジェクトに対するインプレース操作の割り当てです。例えば:
mylist = mylist.sort()
リストのsort()
メソッドは、リストをその場でソートします。つまり、mylist
変更されます。しかし、メソッドの実際の戻り値はNone
ソートされたリストではありません。これで、 に割り当てられNone
ましたmylist
。次に実行しようとすると、mylist.append(1)
Python でこのエラーが表示されます。
はNoneType
値の型ですNone
。この場合、変数lifetime
の値はNone
です。
これを実現する一般的な方法は、 が欠落している関数を呼び出すことreturn
です。
ただし、変数を 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' がありませんか?
fit 関数に追加return self
すると、エラーが修正されます。
アクセスしようとしているオブジェクトを意味しますNone
。PythonNone
の変数です。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")