Pythonでは、オブジェクトが添え字付け可能かどうかはどういう意味ですか?
-
03-07-2019 - |
質問
どの種類のオブジェクトが" subscriptable"のドメインに分類されますか?
解決
基本的には、オブジェクトが __ getitem __()
メソッドを実装することを意味します。言い換えれば、「コンテナ」であるオブジェクトを記述します。つまり、他のオブジェクトを含むことを意味します。これには、リスト、タプル、および辞書が含まれます。
他のヒント
頭の外では、以下が添え字付け可能な唯一のビルトインです:
string: "foobar"[3] == "b"
tuple: (1,2,3,4)[3] == 4
list: [1,2,3,4][3] == 4
dict: {"a":1, "b":2, "c":3}["c"] == 3
しかし、 mipadiの答えは正しい- __ getitem __
を実装するクラスはすべて添字可能
スクリプト化可能なオブジェクトは、実行された操作を記録するオブジェクトであり、「スクリプト」として保存できます。再生できます。
たとえば、次を参照してください:アプリケーションスクリプトフレームワーク
今、Alistairが彼が何を尋ねたかを知らず、本当に「添え字付け可能」を意味した場合、オブジェクト(他の人が編集したもの)、そして(mipadiも答えたように)これは正しいものです:
添え字付きオブジェクトは、 __ getitem __
特殊メソッド(リスト、辞書など)を実装するオブジェクトです。
計算における添字の意味は次のとおりです。 "配列内の要素の1つを指定するために単独でまたは他のプログラムと一緒に使用される記号(概念的には下付き文字として書かれますが、実際には通常は使用されません)。
今、 @ user2194711 で示された簡単な例では、追加要素が次の2つの理由により、リストの一部です。-
1)appendメソッドを実際に呼び出していません。呼び出すには()
が必要だからです。
2)エラーは、関数またはメソッドが添え字付け可能でないことを示しています。リストやシーケンスのようにインデックス付けできないことを意味します。
これをご覧ください:-
>>> var = "myString"
>>> def foo(): return 0
...
>>> var[3]
't'
>>> foo[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'function' object is not subscriptable
つまり、 function
に添字やsay要素が存在しないことを意味します。また、 []
を使用してアクセスすることはできません。
また; mipadi が彼の答えで言ったように。基本的に、オブジェクトが __ getitem __()
メソッドを実装することを意味します。 (添え字付け可能な場合)。
したがって、エラーが発生しました:
arr.append["HI"]
TypeError: 'builtin_function_or_method'オブジェクトは添字付けできません
同じ問題がありました。私はやっていた
arr = []
arr.append["HI"]
[
を使用するとエラーが発生していました。 arr.append(&quot; HI&quot;)