Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python AttributeError:ハウツーガイド

属性は、オブジェクト、データ型、またはクラスに関連付けられた値または関数です。データ型またはクラスがその属性をサポートしていない値の属性を呼び出すと、AttributeErrorが発生します。

このガイドでは、AttributeErrorとは何かとその意味について説明します。 AttributeErrorの例を見ていき、コードで1つを修正する方法を学ぶことができます。

Python AttributeErrorとは何ですか?

タイプがそのメソッドをサポートしていないオブジェクトの属性を呼び出そうとすると、PythonAttributeErrorが発生します。たとえば、Pythonを使用しようとすると append() 文字列はappend()をサポートしていないため、文字列のメソッドはAttributeErrorを返します 。

Pythonクラスでは、そのクラスのオブジェクトによって共有されるメソッドと値を定義できます。これが、クラスをオブジェクトの青写真と考える人がいる理由です。

メソッドまたはクラスを呼び出すことは、そのクラスの属性を参照していることを示す別の方法です。属性について考える1つの方法は、人の物理的な属性のようなものです。青い目をしている人もいます。ピンク染めの髪の人もいます。これらはすべて属性です。

Pythonクラスでは、属性は「eye_color」である可能性があります。この属性は、人の目の色を定義できます。属性は関数の場合もあります。 changeEyeColor()という関数 「eye_color」の値を変更する可能性があります。

データ型には属性があります。たとえば、Pythonのjoin()メソッドを使用して、文字列をリストに変換できます。文字列オブジェクトはjoin()をサポートします メソッド。

クラスオブジェクトまたはデータ型に関連付けられていない関数または値を参照しようとすると、AttributeErrorが発生します。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

属性エラーPythonの例

2つの靴のリストをマージするプログラムを作成しましょう。 2つの靴店が合併し、販売しているすべてのユニークな靴のリストを作成したいと考えています。

まず、ストア1のHarrisonsShoesの靴を含むPythonセットを定義しましょう:

harrisons_shoes = {"Nike Air Force 1 07", "Nike Air Max Plus", "Adidas Gazelle"}

セットを定義するために中括弧を使用します。次に、ハリソンズと合併するストアが提供する靴の名前を使用してセットを定義しましょう。この靴屋は靴エンポリアムと呼ばれています:

shoe_emporium = {"Adidas Samba", "Adidas Superstar", "Nike Air Max Plus"}

これらの2つのコレクションはセットであるため、一意の値のみを格納できます。つまり、それらを足し合わせると、重複する値のないセットが得られます。

セットを一緒に追加するには、extend()という組み込み関数を使用します:

harrisons_shoes.extend(shoe_emporium)
print(harrisons_shoes)

extend() メソッドは、「shoe_emporium」セットから「harrisons_shoes」セットにすべての靴を追加します。 Python print()を使用します 声明。これにより、新しいセットのすべての靴を見ることができます。コードを実行して、何が起こるか見てみましょう:

Traceback (most recent call last):
  File "main.py", line 3, in <module>
	harrisons_shoes.extend(shoe_emporium)
AttributeError: 'set' object has no attribute 'extend'

コードはAttributeErrorを返します。

AttributeErrorPythonソリューション

エラーメッセージは、メソッド extend()を使用できないことを示しています。 データ型がセットであるオブジェクト。これは、 extend()が原因です。 リストメソッドです。セットではサポートされていません。

2つのセットをマージする場合は、加算記号を使用する必要があります:

harrisons_shoes.update(shoe_emporium)
print(harrisons_shoes)

これにより、「shoe_emporium」セットの内容が「harrisons_shoes」セットに追加されます。次に、コンソールに設定された「harrisons_shoes」のすべての値を出力します。新しいプログラムを実行してみましょう:

{'Nike Air Force 1 07', 'Adidas Superstar', 'Adidas Samba', 'Nike Air Max Plus', 'Adidas Gazelle'}

私たちのプログラムは、2つの元のセットからすべての靴を含むセットを返します。元の2つのセットには6つの値がありましたが、現在は5つしかありません。これは、2つの靴が同じであり、セットには一意の値しか保存できないためです。

私たちのプログラムは、2つの元のセットからすべての靴を含むセットを返します。元の2つのセットには6つの値がありましたが、現在は5つしかありません。これは、2つの靴が同じであり、セットには一意の値しか保存できないためです。

調査する同様のAttributeErrors

AttributeErrorsは非常に一般的です。これらは、参照している属性をサポートしていないデータ型およびクラスの属性を呼び出そうとしたときに発生する可能性があります。

これらのエラーは、属性を参照するときにタイプミスをした場合にも発生する可能性があります。 Pythonはコードをそのまま解釈します。タイプミスをすると、Pythonには、存在しない属性を参照しているように見えます。

たとえば、Python split()を使用します リストを分割する方法は一般的です。ただし、 split() は文字列メソッドであるため、リストの分割には使用できません。

詳細については、次のエラーの調査を検討してください。

  • AttributeError:「list」オブジェクトには属性「split」がありません
  • AttributeError:「module」オブジェクトに属性「urlopen」がありません

結論

無効な属性が参照されると、Pythonの属性エラーが発生します。これらのエラーを解決するには、最初に、呼び出している属性が存在することを確認してください。次に、属性が作業しているオブジェクトまたはデータ型に関連していることを確認します。

必要な属性が組み込みタイプに関連付けられていて存在しない場合は、別の属性を探す必要があります。別のデータ型で使用できる1つのデータ型に存在する多くの属性の代替手段があります。たとえば、 extend()はありません。 セットを使用するメソッドですが、 union()を使用できます セットに参加します。

Pythonコードの記述について詳しくは、Pythonの学習方法ガイドをご覧ください。


  1. Python Hello World:ハウツーガイド

    Pythonの「HelloWorld」プログラムは通常、コーダーがPythonで作成する最初のプログラムです。このプログラムは、printステートメントを使用してPythonコンソールに文字列を表示します。プログラムは次のようになります:print(“ Hello World”)。 Pythonバージョンが機能することを確認するために作成できる最初のプログラムの1つは、「HelloWorld」です。プログラムを作成するには、ターミナルまたは選択したコードエディター(Visual Studio Code、Vimなど)の2つの方法があります。 開始するには、マシンにPython3がインストー

  2. Pythonでadd()を設定する

    このチュートリアルでは、追加について学習します。 データ構造を設定する方法。チュートリアルに飛び込みましょう。 設定 データ構造には、固有の要素が格納されます。 追加 データ構造を設定する方法は要素を取ります セットに追加します。 以下の手順に従って、セットに新しい要素を追加します。 セットを初期化します。 addメソッドを使用してセットに新しい要素を追加します。 更新されたセットを印刷します。 例 # initialzing the set numbers_set = {1, 2, 3, 4, 4, 5} # adding an element to the set numbers_