__getitem__() v Pythone
V Pythone je všetko objekt. Na týchto objektoch za scénou existuje veľa „obyčajných“ metód systémového volania, ktoré programátor nevidí. Tu prichádza to, čo sa nazýva ako magické metódy . Magické metódy v pythone sú špeciálne metódy, ktoré sa vyvolávajú pri spustení akéhokoľvek bežného kódu pythonu. Na odlíšenie od normálnych funkcií majú okolité dvojité podčiarknutia.
Ak chceme pridať a a b, napíšeme nasledujúcu syntax:
c = a + b
Vnútorne sa nazýva:
c = a.__add__(b)
__getitem__()> je magická metóda v Pythone, ktorá pri použití v triede umožňuje jej inštanciám používať metódu []> (indexer) operátory. Povedzme, že x je inštanciou tejto triedy x[i]> je približne ekvivalentná type(x).__getitem__(x, i)> .
Metóda __getitem__(self, key)> definuje správanie pri prístupe k položke pomocou zápisu self[key]> . Toto je tiež súčasťou protokolov premeniteľných aj nemenných kontajnerov.
Príklad:
# 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> ()]> |
Výkon:
5 slice(5, 65, 5) techcodeview.com (1, 'x', 10.0) slice('a', 'z', 2) Na rozdiel od niektorých iných jazykov vám Python v podstate umožňuje odovzdať akýkoľvek objekt do indexátora. Možno vás prekvapí, že test[1, 'x', 10.0]> vlastne analyzuje. Pre tlmočníka Pythonu je tento výraz ekvivalentný tomuto: test.__getitem__((1, 'x', 10.0))> . Ako vidíte, časť 1, „x“, 10.0 je implicitne analyzovaná ako n-tica. The test[5:65:5]> výraz využíva syntax rezu Pythonu. Je ekvivalentný tomuto výrazu: test[slice(5, 65, 5)].
The __getitem__> magická metóda sa zvyčajne používa na indexovanie zoznamov, vyhľadávanie v slovníkoch alebo prístup k rozsahom hodnôt. Vzhľadom na to, aký je všestranný, je to pravdepodobne jedna z najmenej využívaných magických metód Pythonu.