__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, quindi x[i]> è più o meno equivalente a type(x).__getitem__(x, i)> .
Il metodo __getitem__(self, key)> definisce il comportamento per quando si accede a un elemento, utilizzando la notazione self[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 il test[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. IL test[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.