__getitem__() w Pythonie
W Pythonie wszystko jest obiektem. Istnieje wiele „zwykłych” metod wywołań systemowych na tych obiektach za sceną, które nie są widoczne dla programisty. Nadchodzą tak zwane magiczne metody . Metody magiczne w Pythonie to specjalne metody, które są wywoływane, gdy uruchamiamy dowolny zwykły kod Pythona. Aby odróżnić je od normalnych funkcji, otaczają je podwójne podkreślenia.
Jeśli chcemy dodać aib, piszemy następującą składnię:
c = a + b
Wewnętrznie nazywa się to:
c = a.__add__(b)
__getitem__()> to magiczna metoda w Pythonie, która użyta w klasie pozwala jej instancjom na użycie []> operatory (indeksatora). Powiedzmy więc, że x jest instancją tej klasy x[i]> jest mniej więcej równoważne type(x).__getitem__(x, i)> .
Metoda __getitem__(self, key)> definiuje zachowanie podczas uzyskiwania dostępu do elementu, używając notacji self[key]> . Jest to również część zarówno zmiennych, jak i niezmiennych protokołów kontenerów.
Przykład:
# 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> ()]> |
Wyjście:
5 slice(5, 65, 5) techcodeview.com (1, 'x', 10.0) slice('a', 'z', 2) W przeciwieństwie do niektórych innych języków, Python zasadniczo pozwala przekazać dowolny obiekt do indeksatora. Możesz być zaskoczony, że test[1, 'x', 10.0]> faktycznie analizuje. Dla interpretera Pythona to wyrażenie jest równoważne temu: test.__getitem__((1, 'x', 10.0))> . Jak widać, część 1, „x”, 10,0 jest domyślnie analizowana jako krotka. The test[5:65:5]> wyrażenie korzysta ze składni plasterków Pythona. Jest to odpowiednik tego wyrażenia: test[slice(5, 65, 5)].
The __getitem__> Metoda magiczna jest zwykle używana do indeksowania list, przeszukiwania słownika lub uzyskiwania dostępu do zakresów wartości. Biorąc pod uwagę jego wszechstronność, jest to prawdopodobnie jedna z najrzadziej wykorzystywanych magicznych metod Pythona.