logo

__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řídyx[i]>je zhruba ekvivalentnítype(x).__getitem__(x, i)>.

Metoda__getitem__(self, key)>definuje chování při přístupu k položce pomocí notaceself[key]>. To je také součástí proměnných i neměnných kontejnerových protokolů.



Příklad:




SIM karta vložena, ale bez servisního androidu



latexové písmo

# 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í, žetest[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. Thetest[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.