AttributeError の解決: 'list' オブジェクト属性 'append' は読み取り専用です

Olorunfemi Akinlua 2023年6月21日
AttributeError の解決: 'list' オブジェクト属性 'append' は読み取り専用です

Python でリストを操作する場合、データ型に対してさまざまな操作 (メソッド) を実行できます。 それらを効果的にエラーなく使用するには、それらがどのように機能するかを理解する必要があります。

これらのメソッドを使用するには、その構文、エラー、および操作モードを知る必要があります。 これらの多くのメソッドの 1つは append() メソッドで、リストに新しい要素を追加するのに役立ちます。

ただし、誤って使用すると、AttributeError: 'list' object attribute 'append' is read-onlyというエラー メッセージが表示されます。

この記事では、この AttributeError: 'list' object attribute 'append' is read-only エラー メッセージの原因とその解決方法について説明します。

正しい構文を使用して解決する AttributeError: 'list' object attribute 'append' is read-only

AttributeError: 'list' object attribute 'append' is read-only エラー メッセージは AttributeError で、属性の参照または割り当てが失敗したことを意味します。

エラーメッセージから何が起こっているのか理解できます。 オブジェクト属性 append は読み取り専用であり、この状態が原因で参照または代入操作が失敗しています。

データが append である読み取り専用の場合、アクセスはできますが、変更はできません。 したがって、私たちのコードには、'list' オブジェクト属性 'append' を変更しようとする式があります。

簡単な Python コードを使用して、同じエラー メッセージを再現してみましょう。

このコードでは、要素のリストを保持する変数 shopList を作成します。 次に、別の変数 value が文字列 toothpick にバインドされます。

その後、shopList の内容を出力します。 最後に、バインディング value をリスト shopList に追加しようとしました。

コード:

shopList = ["banana", "orange", "sugar", "salt"]
value = "toothpick"
print(shopList)
shopList.append = value

出力:

['banana', 'orange', 'sugar', 'salt']
Traceback (most recent call last):
  File "c:\Users\akinl\Documents\Python\alt.py", line 4, in <module>
    shopList.append = value
AttributeError: 'list' object attribute 'append' is read-only

解決しようとしているエラー メッセージ AttributeError: 'list' object attribute 'append' is read-only が表示されます。 エラーから、エラーの原因が 4 行目にあることがわかります。

以下のコードは、4 行目にあるものです。

shopList.append = value

さて、ここで何が問題なのですか?

この属性は append と呼ばれます。 コードはバインド valueappend メソッドに割り当てようとしましたが、組み込みオブジェクトのメソッドを置き換えてはならないため、エラーと例外が発生しました。

AttributeError の原因は、append メソッドの使い方に関する SyntaxError です。 append メソッドを使用する正しい方法を以下に示します。

shopList.append(value)

では、同じコードを書き直してみましょう。

shopList = ["banana", "orange", "sugar", "salt"]
value = "toothpick"
print(shopList)
shopList.append(value)
print(shopList)

出力:

['banana', 'orange', 'sugar', 'salt']
['banana', 'orange', 'sugar', 'salt', 'toothpick']

したがって、index などの他のメソッドでも同じエラーが発生する可能性があるため、AttributeError が発生した場合は構文を確認してください。

コード:

shopList = ["banana", "orange", "sugar", "salt"]
shopList.index = "banana"

出力:

Traceback (most recent call last):
  File "c:\Users\akinl\Documents\Python\index.py", line 2, in <module>
    shopList.index = "banana"
AttributeError: 'list' object attribute 'index' is read-only

今回のエラーは、append ではなく、AttributeError: 'list' object attribute 'index' is read-only です。

構文には常に注意してください。

Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

関連記事 - Python Error