Wprowadzenie do __getitem__: magiczna metoda w Pythonie

Wprowadzenie do __getitem__: magiczna metoda w Pythonie

Węzeł źródłowy: 2011206

Wprowadzenie do __getitem__: magiczna metoda w Pythonie
Zdjęcie autora

Python to magiczny język z wieloma koncepcjami, których nawet zaawansowani użytkownicy mogą nie znać. Jedną z nich są metody Dundera lub metody magiczne. Metody magiczne to metody specjalne otoczone podwójnymi podkreśleniami. Nie są one wywoływane jawnie, w przeciwieństwie do zwykłych metod w Pythonie. Jedną z takich magicznych metod jest __getitem__ metoda, dzięki której obiekty Pythona zachowują się jak sekwencje lub kontenery, np. listy, słowniki i krotki. Pobiera indeks lub wycinek i pobiera powiązaną z nim wartość z kolekcji. Jest wywoływany automatycznie za każdym razem, gdy używamy metody indexer [ ] operator, aby uzyskać dostęp do elementów w obiekcie.

Pomyśl o tej metodzie jak o magicznej różdżce, która daje ci moc wydobycia wymaganych informacji po prostu przez napisanie kilku linijek kodu. Ciekawe, prawda? Metoda ta jest również szeroko stosowana w analizie danych i uczeniu maszynowym. Zanurzmy się więc głębiej w __getitem__ metodę i odkryj jej moc i elastyczność.

Chcę, abyś zrozumiał, że Twoje obowiązki jako programisty Pythona to coś więcej niż tylko pisanie kodu funkcjonalnego. Twój kod powinien być wydajny, czytelny i łatwy w utrzymaniu. Za pomocą __getitem__ pomoże Ci osiągnąć te cele. Oto kilka innych korzyści płynących ze stosowania tej magicznej metody:

  • Zmniejsza zużycie pamięci, umożliwiając wyodrębnienie tylko niezbędnych informacji zamiast ładowania do pamięci całej struktury danych
  • Zapewnia większą elastyczność w sposobie obsługi i manipulacji danymi
  • Umożliwia iterację po kolekcji bez zapętlania danych
  • Zwiększa funkcjonalność, umożliwiając pisanie zaawansowanego indeksowania, które może nie być możliwe w przypadku typów wbudowanych
  • Upraszcza kod, ponieważ używa znanej notacji

Składnia dla __getitem__ metoda jest następująca:

def __getitem__(self, index): # Your Implementation pass

 

Definiuje zachowanie funkcji i przyjmuje w jej parametrze indeks, do którego próbujesz uzyskać dostęp. Możemy użyć tej metody w następujący sposób:

my_obj[index] 

 

To przekłada się na stwierdzenie my_obj.__getitem__(index) pod maską. Teraz możesz pomyśleć, czym różni się od wbudowanego indexer [] operator? Gdziekolwiek używasz tej notacji, Python automatycznie wywołuje metodę __getitem__ metoda dla Ciebie i jest skrótem dostępu do elementów. Ale jeśli chcesz zmienić zachowanie indeksowania obiektów niestandardowych, musisz jawnie wywołać funkcję __getitem__ Metoda.

Przykład 01

Zacznijmy najpierw od prostego przykładu. Stworzymy klasę Student, która będzie zawierała listę wszystkich uczniów i będziemy mogli uzyskać do nich dostęp za pomocą indeksu, biorąc pod uwagę, że indeks reprezentuje ich unikalny identyfikator studenta.

class Student: def __init__(self, names): self.names=names def __getitem__(self,index): return self.names[index] section_A= Student(["David", "Elsa", "Qasim"])
print(section_A[2])

 

Wyjście:

 

Teraz przejdziemy do zaawansowanego przykładu, w którym zmienimy zachowanie indeksowania za pomocą __getitem__ metoda. Załóżmy, że mam listę elementów ciągu i chcę pobrać ten element za każdym razem, gdy wprowadzę jego pozycję indeksu. Pozycję indeksu mogę także uzyskać, jeśli wprowadzę sam ciąg.

class MyList: def __init__(self, items): self.items = items def __getitem__(self, index): if isinstance(index, int): return self.items[index] elif isinstance(index, str): return self.items.index(index) else: raise TypeError("Invalid Argument Type") my_list = MyList(['red', 'blue', 'green', 'black']) # Indexing with integer keys
print(my_list[0]) print(my_list[2]) # Indexing with string keys
print(my_list['red']) print(my_list['green']) 

 

Wyjście:

red
green
0 2

Ta metoda jest niezwykle przydatna do szybkiego wyszukiwania atrybutów instancji. Biorąc pod uwagę elastyczność i wszechstronność tej metody, powiedziałbym, że jest to jedna z najrzadziej wykorzystywanych magicznych metod Pythona. Mam nadzieję, że podobała Ci się lektura tego artykułu. Jeśli chcesz dowiedzieć się więcej o innych magicznych metodach w Pythonie, daj mi znać w sekcji komentarzy.
 
 
Kanwal Mehreen jest początkującym programistą, żywo zainteresowanym nauką o danych i zastosowaniami sztucznej inteligencji w medycynie. Kanwal został wybrany jako Google Generation Scholar 2022 dla regionu APAC. Kanwal uwielbia dzielić się wiedzą techniczną, pisząc artykuły na popularne tematy, i pasjonuje się ulepszaniem reprezentacji kobiet w branży technologicznej.
 

Znak czasu:

Więcej z Knuggety