AttributeError : xxx has no attribute yyyの対処方法

講師
講師

本記事では、AttributeError : xxx has no attribute yyyの対処方法エラーが発生する原因と、対処法についていくつかのサンプルコードを用いて解説します。

AttributeError : xxx has no attribute yyyが発生する原因と対処法

AttributeErrorが発生する原因はいくつかあります。それぞれの原因について、サンプルコードを用いて解説します

①オブジェクトにない属性・メソッドを使用している場合

サンプルコードを見てみましょう。

name = 'Hanako'
name.append('Taro')

このサンプルコードを実行すると、以下のようなエラーが発生します。

AttributeError                            Traceback (most recent call last)
<ipython-input-1-2fc968b3718f> in <module>()
      1 name = 'Hanako'
----> 2 name.append('Taro')

AttributeError: 'str' object has no attribute 'append'

これは、文字列型のオブジェクトに使用不可能なメソッドを使用していることが原因です。直接文字列にappend()関数で新しい要素を追加しようとしているのでエラーが発生します。

【対処法】

オブジェクトに存在する属性・メソッドを使用するか、オブジェクトを変更することでエラーを解消できます。

name = ['Hanako']
name.append('Taro')
print(name)

出力結果:

['Hanako', 'Taro']

②属性・メソッド名が誤っている場合

name = ['Hanako']
name.apend('Taro')
print(name)

上記のサンプルコードを実行すると、このようなエラーが発生します。

AttributeError                            Traceback (most recent call last)
<ipython-input-3-f70df53775ef> in <module>()
      1 name = ['Hanako']
----> 2 name.apend('Taro')
      3 print(name)

AttributeError: 'list' object has no attribute 'apend'

これは、appned()関数のスペルを誤っていることが原因です。リストには、「apend()」というメソッドは存在しないので、AttributeErrorが発生します。

【対処法】

スペルミスを修正します。

name = ['Hanako']
name.append('Taro')
print(name)

出力結果:

['Hanako', 'Taro']

③モジュールのバージョンが違う場合

他のメソッド等は問題なく使用できる、スペルミスをしているわけでもない、という場合は、使用しているモジュールのバージョンが違うことが原因として考えられます。

とあるバージョンにはある属性が、とあるバージョンには無い、ということが稀にあるのです。

【対処法】

その場合の対処法としては、一旦インストール済みのモジュールをアンインストールし、再度インストールします。公式ドキュメントで、使用したいメソッド・属性が使えるバージョンを確認すると確実です。

$ pip uninstall 〇〇〇
$ pip install 〇〇〇==2.3.0
講師
講師

いかがでしたか?本記事ではAttribute Errorの原因と対処法について解説しました。Attribute Errorが発生したら、まず最初にオブジェクトに属性やメソッドが存在するかを確認しましょう。モジュールのバージョンが異なっていることが原因の場合もありますので、合わせて確認してみてください。


Startlabのプログラミング入門コースは、Python未経験者・初学者にもわかりやすいカリキュラムと続けやすいサポート体制が魅力。自分の学習目的に合っているか、どういった知識を身に付けることができるのかなど、無料カウンセリングでぜひご相談ください!カウンセリングは毎日実施中、お待ちしております!

無料カウンセリングを予約する