Domanda

Quali tipi di oggetti rientrano nel dominio di " subscriptable " ;?

È stato utile?

Soluzione

Fondamentalmente significa che l'oggetto implementa il metodo __getitem __ () . In altre parole, descrive oggetti che sono "contenitori", nel senso che contengono altri oggetti. Ciò include elenchi, tuple e dizionari.

Altri suggerimenti

In cima alla mia testa, i seguenti sono gli unici built-in sottoscrivibili:

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

Ma la risposta di mipadi è corretta - qualsiasi classe che implementa __getitem__ è iscrivibile

Un oggetto gestibile da script è un oggetto che registra le operazioni eseguite ad esso e può memorizzarle come "script" che può essere riprodotto.

Ad esempio, vedi: Framework di scripting dell'applicazione

Ora, se Alistair non sapeva cosa aveva chiesto e intendeva veramente "quotabile" " oggetti (come modificato da altri), quindi (come anche mipadi ha risposto) questo è quello corretto:

Un oggetto sottoscrivibile è qualsiasi oggetto che implementa il metodo speciale __getitem__ (elenchi di pensiero, dizionari).

Il significato dell'abbonamento nell'informatica è: " un simbolo (teoricamente scritto come un pedice ma in pratica di solito non) usato in un programma, da solo o con altri, per specificare uno degli elementi di un array. "

Ora, nel semplice esempio fornito da @ user2194711 possiamo vedere che l'elemento aggiunto non è in grado di essere un parte dell'elenco per due motivi: -

1) Non stiamo davvero chiamando il metodo append; perché ha bisogno di () per chiamarlo.

2) L'errore indica che la funzione o il metodo non è sottoscrivibile; significa che non sono indicizzabili come un elenco o una sequenza.

Ora vedi questo: -

>>> 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

Ciò significa che non ci sono pedici o dicono elementi nella funzione come accadono nelle sequenze; e non possiamo accedervi come facciamo noi, con l'aiuto di [] .

Inoltre; come mipadi ha detto nella sua risposta; Fondamentalmente significa che l'oggetto implementa il metodo __getitem __ () . (se è abbonabile). Quindi l'errore ha prodotto:

arr.append["HI"]
  

TypeError: l'oggetto 'builtin_function_or_method' non è sottoscrivibile

Ho avuto lo stesso problema. Stavo facendo

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

Quindi l'uso di [ stava causando errori. Dovrebbe essere arr.append("HI")

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top