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 klassenx[i]>tilsvarer omtrentligtype(x).__getitem__(x, i)>.
Metoden__getitem__(self, key)>definerer atferd for når et element er tilgjengelig, ved hjelp av notasjonenself[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 attest[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. Detest[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.