Introduktion til __getitem__: En magisk metode i Python

Introduktion til __getitem__: En magisk metode i Python

Kildeknude: 2011206

Introduktion til __getitem__: En magisk metode i Python
Billede af forfatter

Python er et magisk sprog med mange begreber, som selv avancerede brugere måske ikke er bekendt med. Dunder eller magiske metoder er en af ​​dem. Magiske metoder er specielle metoder, der er omgivet af dobbelte understregninger. De kaldes ikke eksplicit i modsætning til de almindelige metoder i python. En sådan magisk metode er __getitem__ metode, der gør det muligt for Python-objekterne at opføre sig som sekvenser eller beholdere, f.eks. lister, ordbøger og tupler. Den tager indekset eller udsnittet og henter dets tilknyttede værdi fra samlingen. Det påkaldes automatisk, når vi bruger indexer [ ] operatør for at få adgang til elementerne i dit objekt.

Tænk på denne metode som en tryllestav, der giver dig magten til at udtrække den nødvendige information blot ved at skrive et par linjer kode. Interessant ikke? Denne metode bruges også meget i dataanalyse og maskinlæring. Så lad os dykke dybere ned i __getitem__ metode og opdage dens kraft og fleksibilitet.

Jeg vil have dig til at forstå, at din pligt som Python-programmør er mere end blot at skrive funktionel kode. Din kode skal være effektiv, læsbar og vedligeholdelig. Ved brug af __getitem__ vil hjælpe dig med at nå disse mål. Her er nogle andre fordele ved at bruge denne magiske metode:

  • Reducerer hukommelsesforbruget ved at tillade dig kun at udtrække de væsentlige oplysninger i stedet for at indlæse hele datastrukturen i hukommelsen
  • Giver større fleksibilitet i, hvordan data håndteres og manipuleres
  • Giver dig mulighed for at iterere over samlingen uden at gå over dataene
  • Forbedrer funktionaliteten ved at give dig mulighed for at skrive avanceret indeksering, som måske ikke er mulig med de indbyggede typer
  • Forenkler koden, da den bruger den velkendte notation

Syntaksen for __getitem__ metoden er som følger:

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

 

Den definerer funktionsmåden og tager det indeks, du forsøger at få adgang til, i dens parameter. Vi kan bruge denne metode som denne:

my_obj[index] 

 

Dette oversættes til udsagnet my_obj.__getitem__(index) under kølerhjelmen. Nu tænker du måske, hvordan adskiller det sig fra den indbyggede indexer [] operatør? Uanset hvor du bruger denne notation, kalder python automatisk til __getitem__ metode for dig og er en forkortelse for adgang til elementer. Men hvis du vil ændre adfærden for indeksering for brugerdefinerede objekter, skal du udtrykkeligt kalde __getitem__ fremgangsmåde.

eksempel #01

Lad os starte med et let eksempel først. Vi vil oprette en elevklasse, der vil have listen over alle eleverne, og vi kan få adgang til dem efter indeks og overveje, at indekset repræsenterer deres unikke elev-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])

 

Output:

 

Nu vil vi gå over til et avanceret eksempel, hvor vi vil ændre indekseringsadfærden ved hjælp af __getitem__ metode. Antag, at jeg har en liste over strengelementer, og jeg vil hente elementet, når jeg indtaster dets indeksposition, og jeg kan også få indekspositionen, hvis jeg indtaster 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']) 

 

Output:

red
green
0 2

Denne metode er yderst nyttig til det hurtige opslag af instansattributterne. I betragtning af fleksibiliteten og alsidigheden af ​​denne metode, vil jeg sige, at dette er en af ​​de mest underudnyttede magiske metoder i Python. Jeg håber, du nød at læse denne artikel, og lad mig vide det i kommentarfeltet, hvis du er interesseret i at vide om de andre magiske metoder i Python.
 
 
Kanwal Mehreen er en håbefuld softwareudvikler med en stor interesse for datavidenskab og anvendelser af AI i medicin. Kanwal blev valgt som Google Generation Scholar 2022 for APAC-regionen. Kanwal elsker at dele teknisk viden ved at skrive artikler om populære emner og brænder for at forbedre repræsentationen af ​​kvinder i den teknologiske industri.
 

Tidsstempel:

Mere fra KDnuggets