Uvod v __getitem__: čarobna metoda v Pythonu

Uvod v __getitem__: čarobna metoda v Pythonu

Izvorno vozlišče: 2011206

Uvod v __getitem__: čarobna metoda v Pythonu
Slika avtorja

Python je čaroben jezik s številnimi koncepti, ki jih morda niti napredni uporabniki ne poznajo. Ena izmed njih je metoda Dunder ali Magical. Magične metode so posebne metode, ki so obdane z dvojnimi podčrtaji. Ne kličejo se eksplicitno, za razliko od običajnih metod v pythonu. Ena takih čarobnih metod je __getitem__ metoda, ki objektom Python omogoča, da se obnašajo kot zaporedja ali vsebniki, npr. seznami, slovarji in tuple. Vzame indeks ali rezino in pridobi povezano vrednost iz zbirke. Prikliče se samodejno, kadar koli uporabimo indexer [ ] za dostop do elementov v vašem objektu.

Na to metodo pomislite kot na čarobno palico, ki vam daje moč, da izvlečete zahtevane informacije samo tako, da napišete nekaj vrstic kode. Zanimivo kajne? Ta metoda se pogosto uporablja tudi pri analizi podatkov in strojnem učenju. Torej, potopimo se globlje v __getitem__ metodo in odkrijte njeno moč in prilagodljivost.

Želim, da razumete, da je vaša dolžnost programerja Pythona več kot le pisanje funkcionalne kode. Vaša koda mora biti učinkovita, berljiva in vzdržljiva. Uporaba __getitem__ vam bo pomagal doseči te cilje. Tukaj je nekaj drugih prednosti uporabe te čarobne metode:

  • Zmanjša porabo pomnilnika, saj vam omogoča, da izvlečete samo bistvene informacije, namesto da v pomnilnik naložite celotno strukturo podatkov
  • Zagotavlja večjo prilagodljivost pri obravnavi in ​​manipuliranju podatkov
  • Omogoča ponavljanje po zbirki brez zank po podatkih
  • Izboljša funkcionalnost tako, da vam omogoča pisanje naprednega indeksiranja, ki morda ni mogoče z vgrajenimi vrstami
  • Poenostavi kodo, saj uporablja znani zapis

Sintaksa za __getitem__ metoda je naslednja:

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

 

Določa vedenje funkcije in vzame indeks, do katerega poskušate dostopati, v njen parameter. To metodo lahko uporabimo takole:

my_obj[index] 

 

To pomeni izjava my_obj.__getitem__(index) pod pokrovom. Zdaj si morda mislite, kako se razlikuje od vgrajenega indexer [] operater? Kjerkoli uporabite ta zapis, python samodejno pokliče __getitem__ metoda za vas in je okrajšava za dostop do elementov. Če pa želite spremeniti vedenje indeksiranja za objekte po meri, morate izrecno poklicati __getitem__ metoda.

Primer # 01

Začnimo najprej z enostavnim primerom. Ustvarili bomo razred študentov, ki bo imel seznam vseh študentov, do njih pa bomo lahko dostopali po indeksu in menili, da indeks predstavlja njihovo edinstveno številko študenta.

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])

 

izhod:

 

Zdaj se bomo premaknili na naprednejši primer, kjer bomo spremenili vedenje indeksiranja z uporabo __getitem__ metoda. Recimo, da imam seznam elementov niza in želim pridobiti element vsakič, ko vnesem njegov indeksni položaj, položaj indeksa pa lahko dobim tudi, če vnesem sam niz.

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']) 

 

izhod:

red
green
0 2

Ta metoda je izjemno uporabna za hitro iskanje atributov primerka. Glede na prilagodljivost in vsestranskost te metode bi rekel, da je to ena najbolj premalo uporabljenih čarobnih metod Pythona. Upam, da ste uživali v branju tega članka in mi sporočite v razdelku za komentarje, če vas zanimajo druge čarobne metode v Pythonu.
 
 
Kanwal Mehreen je ambiciozen razvijalec programske opreme z velikim zanimanjem za podatkovno znanost in uporabo umetne inteligence v medicini. Kanwal je bil izbran za Google Generation Scholar 2022 za regijo APAC. Kanwal rad deli tehnično znanje s pisanjem člankov o trendovskih temah in se strastno trudi izboljšati zastopanost žensk v tehnološki industriji.
 

Časovni žig:

Več od KDnuggets