__getitem__() i Python
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 klasse x[i]> svarer nogenlunde til type(x).__getitem__(x, i)> .
Metoden __getitem__(self, key)> definerer adfærd for, hvornår et element er tilgået ved hjælp af notationen self[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, at test[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. Det test[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.