logo

__getitem__() in Python

In Python, tutto è un oggetto. Ci sono molti metodi di chiamata di sistema “ordinari” su questi oggetti dietro le quinte che non sono visibili al programmatore. Ecco quelli che vengono chiamati come metodi magici . I metodi magici in Python sono metodi speciali che vengono invocati quando eseguiamo qualsiasi codice Python ordinario. Per differenziarli dalle funzioni normali, sono circondati da doppi trattini bassi.

Se vogliamo sommare a e b scriviamo la seguente sintassi:



 c = a + b>

Internamente è chiamato come:

 c = a.__add__(b)>

__getitem__()>è un metodo magico in Python, che, se utilizzato in una classe, consente alle sue istanze di utilizzare il file[]>operatori (indicizzatore). Supponiamo che x sia un'istanza di questa classe, quindix[i]>è più o meno equivalente atype(x).__getitem__(x, i)>.

Il metodo__getitem__(self, key)>definisce il comportamento per quando si accede a un elemento, utilizzando la notazioneself[key]>. Anche questo fa parte dei protocolli contenitore mutabile e immutabile.



Esempio:






# Code to demonstrate use> # of __getitem__() in python> > > class> Test(>object>):> > ># This function prints the type> ># of the object passed as well> ># as the object item> >def> __getitem__(>self>, items):> >print> (>type>(items), items)> > # Driver code> test>=> Test()> test[>5>]> test[>5>:>65>:>5>]> test[>'techcodeview.com'>]> test[>1>,>'x'>,>10.0>]> test[>'a'>:>'z'>:>2>]> test[>object>()]>

>

>

Produzione:

 5 slice(5, 65, 5) techcodeview.com (1, 'x', 10.0) slice('a', 'z', 2)>

A differenza di altri linguaggi, Python sostanzialmente ti consente di passare qualsiasi oggetto all'indicizzatore. Potresti essere sorpreso dal fatto che iltest[1, 'x', 10.0]>effettivamente analizza. Per l'interprete Python, quell'espressione è equivalente a questa:test.__getitem__((1, 'x', 10.0))>. Come puoi vedere, la parte 1, 'x', 10.0 viene implicitamente analizzata come una tupla. ILtest[5:65:5]>espressione fa uso della sintassi delle sezioni di Python. È equivalente a questa espressione: test[slice(5, 65, 5)].

IL__getitem__>Il metodo magic viene solitamente utilizzato per l'indicizzazione di elenchi, la ricerca nel dizionario o l'accesso a intervalli di valori. Considerando quanto sia versatile, è probabilmente uno dei metodi magici più sottoutilizzati di Python.