__getitem__() v Pythonu
V Pythonu je vse predmet. Za temi objekti je v ozadju veliko 'navadnih' sistemskih klicnih metod, ki jih programer ne vidi. Tukaj pridejo tako imenovani čarobne metode . Čarobne metode v pythonu so posebne metode, ki se prikličejo, ko zaženemo katero koli običajno kodo python. Da bi jih razlikovali od običajnih funkcij, imajo okoli njih dvojne podčrtaje.
Če želimo dodati a in b, zapišemo naslednjo sintakso:
c = a + b
Interno se imenuje:
c = a.__add__(b)
__getitem__()> je čarobna metoda v Pythonu, ki ob uporabi v razredu dovoljuje svojim primerkom uporabo []> (indexer) operaterji. Recimo, da je x primerek tega razreda x[i]> je približno enakovredno type(x).__getitem__(x, i)> .
Metoda __getitem__(self, key)> definira vedenje ob dostopu do elementa z uporabo zapisa self[key]> . To je tudi del spremenljivega in nespremenljivega vsebniškega protokola.
primer:
# 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> ()]> |
Izhod:
5 slice(5, 65, 5) techcodeview.com (1, 'x', 10.0) slice('a', 'z', 2) Za razliko od nekaterih drugih jezikov vam Python v bistvu omogoča, da v indekser prenesete kateri koli predmet. Morda boste presenečeni, da test[1, 'x', 10.0]> dejansko razčlenjuje. Za tolmača Pythona je ta izraz enakovreden temu: test.__getitem__((1, 'x', 10.0))> . Kot lahko vidite, je del 1, 'x', 10.0 implicitno razčlenjen kot tuple. The test[5:65:5]> izraz uporablja Pythonovo sintakso rezine. Enakovredno je temu izrazu: test[slice(5, 65, 5)].
The __getitem__> čarobna metoda se običajno uporablja za indeksiranje seznamov, iskanje po slovarju ali dostopanje do obsegov vrednosti. Glede na to, kako vsestranski je, je verjetno ena najbolj premalo uporabljenih čarobnih metod Pythona.