__getitem__() v Pythonu
V Pythonu je vše objekt. Na těchto objektech v zákulisí existuje mnoho „obyčejných“ metod systémového volání, které programátor nevidí. Zde přichází to, čemu se říká jako magické metody . Magické metody v pythonu jsou speciální metody, které se vyvolají, když spustíme jakýkoli běžný kód pythonu. Pro odlišení od normálních funkcí mají okolní dvojitá podtržítka.
Pokud chceme přidat a a b, napíšeme následující syntaxi:
c = a + b
Interně se tomu říká:
c = a.__add__(b)
__getitem__()> je magická metoda v Pythonu, která při použití ve třídě umožňuje jejím instancím používat []> (indexer) operátory. Řekněme, že x je instancí této třídy x[i]> je zhruba ekvivalentní type(x).__getitem__(x, i)> .
Metoda __getitem__(self, key)> definuje chování při přístupu k položce pomocí notace self[key]> . To je také součástí proměnných i neměnných kontejnerových protokolů.
Pří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ýstup:
5 slice(5, 65, 5) techcodeview.com (1, 'x', 10.0) slice('a', 'z', 2) Na rozdíl od některých jiných jazyků vám Python v podstatě umožňuje předat jakýkoli objekt do indexeru. Možná vás překvapí, že test[1, 'x', 10.0]> vlastně analyzuje. Pro interpret Pythonu je tento výraz ekvivalentní tomuto: test.__getitem__((1, 'x', 10.0))> . Jak vidíte, část 1, ‚x‘, 10.0 je implicitně analyzována jako n-tice. The test[5:65:5]> výraz využívá syntaxi řezů Pythonu. Je ekvivalentní tomuto výrazu: test[slice(5, 65, 5)].
The __getitem__> magická metoda se obvykle používá pro indexování seznamů, vyhledávání ve slovníku nebo přístup k rozsahům hodnot. Vzhledem k tomu, jak je univerzální, je to pravděpodobně jedna z nejméně využívaných magických metod Pythonu.