Welche Arten von Objekten fallen in den Bereich der "subscriptable"?
Antworten
Zu viele Anzeigen?Soweit ich weiß, sind die folgenden Build-Ins die einzigen, die subscriptable sind:
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
Aber mipadis Antwort ist korrekt - jede Klasse, die die __getitem__
ist subskribierbar
Die Bedeutung von Subskription im Rechnen ist: "ein Symbol (das fiktiv als tiefgestellt geschrieben wird, in der Praxis aber meist nicht), das in einem Programm allein oder zusammen mit anderen verwendet wird, um eines der Elemente eines Arrays anzugeben".
In dem einfachen Beispiel, das durch @user2194711 sehen wir, dass das anhängende Element aus zwei Gründen nicht Teil der Liste sein kann:-
1) Wir rufen die Methode append nicht wirklich auf; denn sie benötigt ()
zu nennen.
2) Der Fehler zeigt an, dass die Funktion oder Methode nicht subscriptable ist; das bedeutet, dass sie nicht indizierbar sind wie eine Liste oder Sequenz.
Und jetzt das:-
>>> 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
Das bedeutet, dass es keine Indizes oder Say-Elemente in function
wie sie in Sequenzen vorkommen; und wir können nicht auf sie zugreifen, wie wir es mit Hilfe von []
.
Auch; als mipadi sagte in seiner Antwort; Es bedeutet im Wesentlichen, dass das Objekt die __getitem__()
Methode. (wenn sie subscriptable ist). Dadurch wird der Fehler erzeugt:
arr.append["HI"]
TypeError: Das Objekt 'builtin_function_or_method' ist nicht subscriptable
Ein skriptfähiges Objekt ist ein Objekt, das die mit ihm durchgeführten Operationen aufzeichnet und sie als "Skript" speichert, das wiedergegeben werden kann.
Siehe zum Beispiel: Application Scripting Framework
Nun, wenn Alistair nicht wusste, was er fragte, und wirklich "subscriptable" Objekte (wie von anderen editiert) meinte, dann (wie mipadi auch antwortete) ist dies die korrekte Variante:
Ein subscriptable Objekt ist jedes Objekt, das die __getitem__
spezielle Methode (z. B. Listen, Wörterbücher).
- See previous answers
- Weitere Antworten anzeigen