私は言うエラーが出続けます
AttributeError: 'NoneType' object has no attribute 'something'
私が持っているコードはここに投稿するには長すぎます。これを引き起こす一般的なシナリオは何ですかAttributeError
、何NoneType
を意味しているのでしょうか、そして何が起こっているのかをどのように絞り込むことができますか?
None
。
私は言うエラーが出続けます
AttributeError: 'NoneType' object has no attribute 'something'
私が持っているコードはここに投稿するには長すぎます。これを引き起こす一般的なシナリオは何ですかAttributeError
、何NoneType
を意味しているのでしょうか、そして何が起こっているのかをどのように絞り込むことができますか?
None
。
回答:
Noneに等しい変数があり、 'something'と呼ばれるその属性にアクセスしようとしています。
foo = None
foo.something = 1
または
foo = None
print foo.something
両方とも AttributeError: 'NoneType'
None
何かから抜け出すことになるかもしれない方法を指摘するまでおそらく役に立たないでしょう。明示的なfoo = None
ことが問題になることはほとんどありません。それが成功するか、結果セットが空であるか何であれ、戻ってくるかもしれfoo = something()
ないことに気づかsomething()
ないでしょNone
う。
他の人たちは、それNoneType
が何であるか、そしてそれで終わる一般的な方法(つまり、関数から値を返すことができない)を説明しました。
予期None
しない別の一般的な理由は、変更可能なオブジェクトへのインプレース操作の割り当てです。例えば:
mylist = mylist.sort()
sort()
リストのメソッドは、リストをインプレースでソートしますmylist
。つまり、変更されます。しかし、メソッドの実際の戻り値は、None
ソートされたリストではありません。これでに割り当てられNone
ましたmylist
。たとえば次にしようとすると、mylist.append(1)
Pythonがこのエラーを表示します。
NoneType
値の型ですNone
。この場合、変数lifetime
の値はNone
です。
これが発生する一般的な方法は、がない関数を呼び出すことですreturn
。
ただし、変数をNoneに設定する方法は他にも無数にあります。
lifetime
価値はなかったと思いますNone
。彼は何か別のものの寿命属性にアクセスしようとしていましたNone
。
以下のコードを検討してください。
def return_something(someint):
if someint > 5:
return someint
y = return_something(2)
y.real()
これによりエラーが発生します
AttributeError: 'NoneType'オブジェクトには 'real'属性がありません
ポイントは以下のとおりです。
これは、アクセスしようとしているオブジェクトを意味します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は正しいですが、非常に頻繁な例を追加します。
この関数は、再帰的な形式で呼び出すことができます。その場合、nullポインタまたはになってしまう可能性がありますNoneType
。その場合、このエラーが発生する可能性があります。そのため、そのパラメーターの属性にアクセスする前に、そうでないかどうかを確認してくださいNoneType
。
if foo is not None:
推定器(sklearn)を構築するときに、フィット関数で自分自身を返すのを忘れると、同じエラーが発生します。
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
関数fitに追加すると、エラーが修正されます。
FlaskアプリケーションでHTMLをコメントアウトすると、このエラーが発生する可能性があります。ここで、qual.date_expiryの値はNoneです。
<!-- <td>{{ qual.date_expiry.date() }}</td> -->
行を削除するか修正します。
<td>{% if qual.date_attained != None %} {{ qual.date_attained.date() }} {% endif %} </td>
以下のようなものを割り当てると、「AttributeError: 'NoneType' object has no attribute 'show'」としてエラーがスローされます。
df1=df.withColumn('newAge',df['Age']).show()
print
関数(またはバージョンによってはステートメント)を追加して、この問題が発生しているコードに変数が実際に持つ実際の値を明らかにします。