Frage

Welche Arten von Objekten in den Bereich fallen, der „subscriptable“?

War es hilfreich?

Lösung

Im Grunde bedeutet es, dass das Objekt die __getitem__() Methode implementiert. Mit anderen Worten, es beschreibt Objekte, die „Container“ sind, dh sie andere Objekte enthalten. Dazu gehören Listen, Tupel und Wörterbücher.

Andere Tipps

Aus der Spitze von meinem Kopf, die folgenden sind die einzigen Einbauten, 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 mipadi Antwort ist richtig - jede Klasse, die __getitem__ implementiert ist subscriptable

Ein skript Objekt ist ein Objekt, das die Vorgänge um es getan aufzeichnet und es kann sie als ein „Skript“ speichern, die wiedergegeben werden können.

Zum Beispiel finden Sie unter: Anwendung Scripting-Framework

Nun, wenn Alistair wußte nicht, was er gefragt und wirklich „subscriptable“ Objekte gemeint (wie von anderen bearbeitet), dann (wie mipadi beantwortete auch) ist dies die richtige:

Ein subscriptable Objekt ist jedes Objekt, das die __getitem__ spezielle Methode (man denke Listen, Wörterbücher) implementiert.

Die Bedeutung des Index in Computing ist: „Ein Symbol (fiktiv als Index geschrieben, aber in der Praxis in der Regel nicht) in einem Programm verwendet, allein oder mit anderen, zu einem der Elemente eines Arrays angeben.“

Nun, in dem einfachen Beispiel gegeben von @ user2194711 können wir sehen, dass das Anfügen Element nicht in der Lage ist, eine sein Teil der Liste aus zwei Gründen: -

1) Wir rufen nicht wirklich die Methode append; weil es () zu nennen es braucht.

2) Der Fehler ist, der anzeigt, dass die Funktion oder die Methode nicht subscriptable ist; bedeutet, dass sie nicht Wende wie eine Liste oder eine Sequenz sind.

Jetzt sehen: -

>>> 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 heißt, es gibt keine Indizes oder Elemente in function sagen, wie sie in Sequenzen auftreten; und wir können sie nicht zugreifen, wie wir tun, mit Hilfe von [].

Auch; wie mipadi sagte in seiner Antwort; Im Grunde bedeutet es, dass das Objekt die Methode __getitem__() implementiert. (Wenn es subscriptable). So ist der Fehler erzeugt hat:

arr.append["HI"]
  

Typeerror: 'builtin_function_or_method' Objekt ist nicht subscriptable

Ich hatte das gleiche Problem. Ich tat

arr = []
arr.append["HI"]

So verwenden [ Fehler verursacht wurde. Es sollte arr.append("HI")

werden
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top