I Python er alt et objekt. Der er mange 'almindelige' systemkaldsmetoder på disse objekter bag scenen, som ikke er synlige for programmøren. Her kommer hvad man kalder magiske metoder . Magiske metoder i python er specielle metoder, der påberåbes, når vi kører en hvilken som helst almindelig python-kode. For at differentiere dem med normale funktioner har de omkringliggende dobbelte understregninger.
Hvis vi vil tilføje a og b, skriver vi følgende syntaks:
c = a + b>
Internt hedder det:
c = a.__add__(b)>
__getitem__()>er en magisk metode i Python, som, når den bruges i en klasse, tillader sine instanser at bruge[]>(indekserings-) operatører. Lad os sige, at x er en forekomst af denne klassex[i]>svarer nogenlunde tiltype(x).__getitem__(x, i)>.
Metoden__getitem__(self, key)>definerer adfærd for, hvornår et element er tilgået ved hjælp af notationenself[key]>. Dette er også en del af både de foranderlige og uforanderlige containerprotokoller.
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>()]> |
>
>
Produktion:
5 slice(5, 65, 5) techcodeview.com (1, 'x', 10.0) slice('a', 'z', 2)> I modsætning til nogle andre sprog lader Python dig dybest set sende ethvert objekt ind i indekseren. Du kan blive overrasket over, attest[1, 'x', 10.0]>rent faktisk analyserer. For Python-fortolkeren svarer det udtryk til dette:test.__getitem__((1, 'x', 10.0))>. Som du kan se, er 1, 'x', 10.0-delen implicit parset som en tupel. Dettest[5:65:5]>expression gør brug af Pythons skivesyntaks. Det svarer til dette udtryk: test[slice(5, 65, 5)].
Det__getitem__>magisk metode bruges normalt til listeindeksering, ordbogsopslag eller adgang til værdiområder. I betragtning af hvor alsidigt det er, er det nok en af Pythons mest underudnyttede magiske metoder.