Question

Quels types d'objets entrent dans le domaine "subscriptable"?

Était-ce utile?

La solution

Cela signifie essentiellement que l'objet implémente la méthode __ getitem __ () . 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.

Autres conseils

En tête de ma liste, voici les seuls composants intégrés pouvant être indexés:

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 ont été effectuées et qui peut les stocker sous forme de "script". qui peut être rejoué.

Par exemple, voir: Framework de script d'application

Maintenant, si Alistair ne savait pas ce qu’il demandait et voulait vraiment dire "subscriptable" objets (édités par d'autres), puis (comme mipadi également répondu) c'est le bon:

Un objet pouvant être souscrit est un objet qui implémente la méthode spéciale __ getitem __ (listes de réflexion, dictionnaires).

La signification de l'indice en informatique est: "Un symbole (écrit théoriquement sous forme d’indice mais en pratique pas dans la pratique) utilisé dans un programme, seul ou associé à 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 ajouté ne peut pas être un élément partie de la liste pour deux raisons: -

1) Nous n'appelons pas vraiment la méthode append; car il faut () pour l'appeler.

2) L'erreur indique que la fonction ou la méthode n'est pas enregistrable. signifie qu'ils ne sont pas indexables comme une liste ou une séquence.

Maintenant, voyez 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’ya pas d’indices ni d’éléments dits dans la fonction comme ils apparaissent dans les séquences; et nous ne pouvons pas y accéder comme nous le faisons, avec l'aide de [] .

Aussi; comme mipadi a déclaré dans sa réponse; Cela signifie fondamentalement que l'objet implémente la méthode __ getitem __ () . (s'il est enregistrable). Ainsi, l’erreur produite:

arr.append["HI"]
  

TypeError: l'objet 'builtin_function_or_method' n'est pas souscriptable

J'ai eu le même problème. Je faisais

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

L'utilisation de [ a donc causé une erreur. Il doit s'agir de arr.append ("HI")

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top