__getitem__() i Python

I Python er alt et objekt. Det er mange 'vanlige' systemanropsmetoder på disse objektene bak scenen som ikke er synlige for programmereren. Her kommer det som kalles magiske metoder . Magiske metoder i python er spesielle metoder som påkalles når vi kjører en hvilken som helst vanlig python-kode. For å differensiere dem med normale funksjoner har de omkringliggende doble understrekinger.

Hvis vi vil legge til a og b, skriver vi følgende syntaks:

 c = a + b 

Internt kalles det som:

 c = a.__add__(b) 

__getitem__()> er en magisk metode i Python, som når den brukes i en klasse, lar forekomstene deres bruke []> (indekserer) operatører. La oss si at x er en forekomst av denne klassen x[i]> tilsvarer omtrentlig type(x).__getitem__(x, i)> .

Metoden __getitem__(self, key)> definerer atferd for når et element er tilgjengelig, ved hjelp av notasjonen self[key]> . Dette er også en del av både de mutbare og uforanderlige containerprotokollene.

Eksempel:




# 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> ()]>

Produksjon:

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

I motsetning til noen andre språk lar Python deg i utgangspunktet sende ethvert objekt inn i indekseren. Du kan bli overrasket over at test[1, 'x', 10.0]> faktisk analyserer. For Python-tolkeren tilsvarer det uttrykket dette: test.__getitem__((1, 'x', 10.0))> . Som du kan se, er 1, 'x', 10.0-delen implisitt analysert som en tuppel. De test[5:65:5]> uttrykk bruker Pythons skivesyntaks. Det tilsvarer dette uttrykket: test[slice(5, 65, 5)].

De __getitem__> magisk metode brukes vanligvis for listeindeksering, ordbokoppslag eller tilgang til verdiområder. Med tanke på hvor allsidig den er, er det sannsynligvis en av Pythons mest underutnyttede magiske metoder.