Johdatus __getitem__: Magic Method Pythonissa

Johdatus __getitem__: Magic Method Pythonissa

Lähdesolmu: 2011206

Johdatus __getitem__: Magic Method Pythonissa
Kuva tekijältä

Python on maaginen kieli, jossa on monia käsitteitä, joita kokeneet käyttäjät eivät ehkä tunne. Dunder tai Magical -menetelmät ovat yksi niistä. Taikamenetelmät ovat erikoismenetelmiä, joita ympäröi kaksinkertainen alaviiva. Niitä ei kutsuta nimenomaisesti toisin kuin tavallisia python-menetelmiä. Yksi tällainen maaginen menetelmä on __getitem__ menetelmä, joka mahdollistaa Python-objektien käyttäytymisen kuten sekvenssit tai säilöt, kuten luettelot, sanakirjat ja monikot. Se ottaa indeksin tai lohkon ja hakee siihen liittyvän arvon kokoelmasta. Sitä kutsutaan automaattisesti aina, kun käytämme indexer [ ] operaattoria päästäksesi käsiksi objektisi elementteihin.

Ajattele tätä menetelmää taikasauvana, joka antaa sinulle mahdollisuuden poimia tarvittavat tiedot kirjoittamalla muutama koodirivi. Mielenkiintoista eikö? Tätä menetelmää käytetään laajasti myös data-analyysissä ja koneoppimisessa. Sukeltakaamme siis syvemmälle __getitem__ menetelmää ja löydä sen voima ja joustavuus.

Haluan sinun ymmärtävän, että velvollisuutesi Python-ohjelmoijana on enemmän kuin vain toiminnallisen koodin kirjoittaminen. Koodisi tulee olla tehokas, luettava ja ylläpidettävä. Käyttämällä __getitem__ auttaa sinua saavuttamaan nämä tavoitteet. Tässä on joitain muita tämän taikamenetelmän etuja:

  • Vähentää muistin käyttöä sallimalla sinun poimia vain olennaiset tiedot sen sijaan, että lataat koko tietorakenteen muistiin
  • Tarjoaa enemmän joustavuutta tietojen käsittelyssä ja käsittelyssä
  • Voit iteroida kokoelmaa ilman silmukkaa dataa
  • Parantaa toimintoja sallimalla sinun kirjoittaa edistyksellistä indeksointia, joka ei ehkä ole mahdollista sisäänrakennetuilla tyypeillä
  • Yksinkertaistaa koodia, koska se käyttää tuttua merkintää

Syntaksi kohteelle __getitem__ menetelmä on seuraava:

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

 

Se määrittelee funktion toiminnan ja ottaa sen parametriin indeksin, jota yrität käyttää. Voimme käyttää tätä menetelmää seuraavasti:

my_obj[index] 

 

Tämä tarkoittaa lausuntoa my_obj.__getitem__(index) konepellin alle. Nyt saatat ajatella, että miten se eroaa sisäänrakennetusta indexer [] operaattori? Missä tahansa käytät tätä merkintää, python kutsuu automaattisesti __getitem__ menetelmä sinulle ja se on lyhenne elementtien käyttämiseen. Mutta jos haluat muuttaa mukautettujen objektien indeksoinnin toimintaa, sinun on kutsuttava nimenomaisesti __getitem__ menetelmällä.

Esimerkki # 01

Aloitetaan ensin helpolla esimerkillä. Luomme opiskelijaluokan, jossa on luettelo kaikista opiskelijoista ja voimme käyttää niitä indeksin avulla ja katsoa, ​​että hakemisto edustaa heidän yksilöllistä opiskelijatunnustaan.

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

 

lähtö:

 

Siirrymme nyt edistyneeseen esimerkkiin, jossa muutamme indeksointikäyttäytymistä käyttämällä __getitem__ menetelmä. Oletetaan, että minulla on luettelo merkkijonoelementeistä ja haluan hakea elementin aina, kun syötän sen indeksipaikan, ja saan myös indeksipaikan, jos syötän itse merkkijonon.

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

 

lähtö:

red
green
0 2

Tämä menetelmä on erittäin hyödyllinen ilmentymien attribuuttien nopeaan hakuun. Tämän menetelmän joustavuuden ja monipuolisuuden huomioon ottaen sanoisin, että tämä on yksi Pythonin eniten käytetyistä taikamenetelmistä. Toivon, että pidit tämän artikkelin lukemisesta ja kerro minulle kommenttiosiossa, jos olet kiinnostunut tietämään muista Pythonin taikamenetelmistä.
 
 
Kanwal Mehreen on tavoitteellinen ohjelmistokehittäjä, joka on kiinnostunut datatieteestä ja tekoälyn sovelluksista lääketieteessä. Kanwal valittiin APAC-alueen Google Generation Scholar 2022 -tutkijaksi. Kanwal rakastaa teknisen tiedon jakamista kirjoittamalla artikkeleita trendikkäistä aiheista ja on intohimoinen naisten edustuksen parantamiseen teknologiateollisuudessa.
 

Aikaleima:

Lisää aiheesta KDnuggets