Introduksjon til __getitem__: A Magic Method in Python

Introduksjon til __getitem__: A Magic Method in Python

Kilde node: 2011206

Introduksjon til __getitem__: A Magic Method in Python
Bilde av forfatter

Python er et magisk språk med mange konsepter som selv avanserte brukere kanskje ikke er kjent med. Dunder eller magiske metoder er en av dem. Magiske metoder er spesielle metoder som er omgitt av doble understrekinger. De kalles ikke eksplisitt i motsetning til de vanlige metodene i python. En slik magisk metode er __getitem__ metode, som gjør at Python-objektene kan oppføre seg som sekvenser eller beholdere, f.eks. lister, ordbøker og tupler. Den tar indeksen eller stykket og henter den tilhørende verdien fra samlingen. Det påkalles automatisk når vi bruker indexer [ ] operatør for å få tilgang til elementene i objektet ditt.

Tenk på denne metoden som en tryllestav som gir deg muligheten til å trekke ut den nødvendige informasjonen bare ved å skrive noen få linjer med kode. Interessant ikke sant? Denne metoden brukes også mye i dataanalyse og maskinlæring. Så la oss dykke dypere inn i __getitem__ metoden og oppdage dens kraft og fleksibilitet.

Jeg vil at du skal forstå at din plikt som Python-programmerer er mer enn bare å skrive funksjonell kode. Koden din skal være effektiv, lesbar og vedlikeholdbar. Ved hjelp av __getitem__ vil hjelpe deg å nå disse målene. Her er noen andre fordeler ved å bruke denne magiske metoden:

  • Reduserer minnebruken ved å la deg trekke ut bare den essensielle informasjonen i stedet for å laste hele datastrukturen inn i minnet
  • Gir større fleksibilitet i hvordan dataene håndteres og manipuleres
  • Lar deg iterere over samlingen uten å gå over dataene
  • Forbedrer funksjonaliteten ved å la deg skrive avansert indeksering som kanskje ikke er mulig med de innebygde typene
  • Forenkler koden ettersom den bruker den kjente notasjonen

Syntaksen for __getitem__ metoden er som følger:

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

 

Den definerer oppførselen til funksjonen og tar indeksen du prøver å få tilgang til i parameteren. Vi kan bruke denne metoden slik:

my_obj[index] 

 

Dette oversettes til uttalelsen my_obj.__getitem__(index) under panseret. Nå tenker du kanskje at hvordan er det forskjellig fra den innebygde indexer [] operatør? Uansett hvor du bruker denne notasjonen, kaller python automatisk opp __getitem__ metode for deg og er en forkortelse for tilgang til elementer. Men hvis du vil endre atferden til indeksering for egendefinerte objekter, må du eksplisitt kalle __getitem__ metoden.

Eksempel 01

La oss starte med et enkelt eksempel først. Vi vil opprette en studentklasse som vil ha listen over alle elevene, og vi kan få tilgang til dem etter indeks og vurdere at indeksen representerer deres unike student-ID.

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

 

Utgang:

 

Nå vil vi gå over til et avansert eksempel hvor vi vil endre indekseringsatferden ved å bruke __getitem__ metode. Anta at jeg har en liste over strengelementer og jeg ønsker å hente elementet hver gang jeg går inn i indeksposisjonen, og jeg kan også få indeksposisjonen hvis jeg skriver inn selve strengen.

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

 

Utgang:

red
green
0 2

Denne metoden er ekstremt nyttig for raskt oppslag av forekomstattributtene. Med tanke på fleksibiliteten og allsidigheten til denne metoden, vil jeg si at dette er en av de mest underutnyttede magiske metodene til Python. Jeg håper du likte å lese denne artikkelen og gi meg beskjed i kommentarfeltet hvis du er interessert i å vite om de andre magiske metodene i Python.
 
 
Kanwal Mehreen er en ambisiøs programvareutvikler med en stor interesse for datavitenskap og anvendelser av AI i medisin. Kanwal ble valgt som Google Generation Scholar 2022 for APAC-regionen. Kanwal elsker å dele teknisk kunnskap ved å skrive artikler om populære emner, og brenner for å forbedre representasjonen av kvinner i teknologiindustrien.
 

Tidstempel:

Mer fra KDnuggets