En Python, qu'est-ce que cela signifie Si un objet est subscriptible ou non?
Quels types d'objets tombent dans le domaine de "subscriptable"?
5 réponses
Cela signifie essentiellement que l'objet implémente l' __getitem__()
méthode. En d'autres termes, il décrit des objets qui sont des "conteneurs", ce qui signifie qu'ils contiennent d'autres objets. Cela inclut les listes, les tuples et les dictionnaires.
En haut de ma tête, les éléments suivants sont les seuls intégrés qui sont subscriptibles:
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
Mais la réponse de mipadi est correcte - toute classe qui implémente __getitem__
est subscriptable
Un objet scriptable est un objet qui enregistre les opérations qui lui sont effectuées et qui peut les stocker sous forme de" script " qui peut être rejoué.
Par exemple, voir: cadre de script D'Application
Maintenant, si Alistair ne savait pas ce qu'il demandait et signifiait vraiment des objets" subscriptables " (tels que modifiés par d'autres), alors (comme mipadi a également répondu) c'est le bon:
Un objet subscriptable est tout objet qui implémente la méthode spéciale __getitem__
(think lists, dictionnaire).
, j'ai eu ce même problème. Je faisais
arr = []
arr.append["HI"]
Donc, l'utilisation de [
provoquait une erreur. Il devrait être arr.append("HI")
La signification de l'indice en informatique est: "un symbole (théoriquement écrit en indice mais en pratique généralement pas) utilisé dans un programme, seul ou avec d'autres, pour spécifier l'un des éléments d'un tableau."
Maintenant, dans l'exemple simple donné par @user2194711 nous pouvons voir que l'élément d'ajout ne peut pas faire partie de la liste pour deux raisons: -
1) Nous n'appelons pas vraiment la méthode append; car elle a besoin de ()
pour l'appeler.
2) l'erreur indique que la fonction ou la méthode n'est pas inscriptible; signifie qu'ils ne sont pas indexables comme une liste ou une séquence.
Maintenant voir ceci:-
>>> 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
Cela signifie qu'il n'y a pas d'indices ou d'éléments dits dans function
comme ils se produisent dans des séquences; et nous ne pouvons pas y accéder comme nous le faisons, avec l'aide de []
.
Aussi; comme mipadi l'a dit dans sa réponse; cela signifie essentiellement que l'objet implémente la méthode __getitem__()
. (s'il est subscriptible).
Ainsi, l'erreur produit:
arr.append["HI"]
TypeError: l'objet' builtin_function_or_method ' n'est pas subscriptable