Introduktion till __getitem__: En magisk metod i Python

Introduktion till __getitem__: En magisk metod i Python

Källnod: 2011206

Introduktion till __getitem__: En magisk metod i Python
Bild av författare

Python är ett magiskt språk med många begrepp som även avancerade användare kanske inte känner till. Dunder eller magiska metoder är en av dem. Magiska metoder är speciella metoder som omges av dubbla understreck. De kallas inte explicit till skillnad från de vanliga metoderna i python. En sådan magisk metod är __getitem__ metod, vilket gör att Python-objekten kan bete sig som sekvenser eller behållare, t.ex. listor, ordböcker och tupler. Den tar indexet eller segmentet och hämtar dess tillhörande värde från samlingen. Det anropas automatiskt när vi använder indexer [ ] operatör för att komma åt elementen i ditt objekt.

Se den här metoden som en trollstav som ger dig kraften att extrahera den information som krävs bara genom att skriva några rader kod. Intressant va? Denna metod används också flitigt inom dataanalys och maskininlärning. Så låt oss dyka djupare in i __getitem__ metod och upptäck dess kraft och flexibilitet.

Jag vill att du ska förstå att din plikt som Python-programmerare är mer än att bara skriva funktionell kod. Din kod ska vara effektiv, läsbar och underhållbar. Använder sig av __getitem__ hjälper dig att uppnå dessa mål. Här är några andra fördelar med att använda denna magiska metod:

  • Minskar minnesanvändningen genom att du bara kan extrahera den väsentliga informationen istället för att ladda hela datastrukturen i minnet
  • Ger större flexibilitet i hur data hanteras och manipuleras
  • Gör att du kan iterera över samlingen utan att loopa över data
  • Förbättrar funktionaliteten genom att låta dig skriva avancerad indexering som kanske inte är möjlig med de inbyggda typerna
  • Förenklar koden eftersom den använder den välbekanta notationen

Syntaxen för __getitem__ metoden är som följer:

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

 

Den definierar funktionens beteende och tar indexet som du försöker komma åt i dess parameter. Vi kan använda den här metoden så här:

my_obj[index] 

 

Detta översätts till uttalandet my_obj.__getitem__(index) under huven. Nu kanske du tror att hur skiljer det sig från den inbyggda indexer [] operatör? Var du än använder den här notationen anropar python automatiskt __getitem__ metod för dig och är förkortningen för att komma åt element. Men om du vill ändra beteendet för indexering för anpassade objekt måste du uttryckligen anropa __getitem__ metod.

Exempel #01

Låt oss börja med ett enkelt exempel först. Vi kommer att skapa en studentklass som kommer att ha listan över alla elever och vi kan komma åt dem via index och anser att indexet representerar deras unika 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])

 

Produktion:

 

Nu kommer vi att gå över till ett avancerat exempel där vi kommer att ändra indexeringsbeteendet med hjälp av __getitem__ metod. Anta att jag har en lista med strängelement och jag vill hämta elementet när jag anger dess indexposition och jag kan också få indexpositionen om jag skriver in själva strängen.

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

 

Produktion:

red
green
0 2

Denna metod är extremt användbar för snabb uppslagning av instansattributen. Med tanke på flexibiliteten och mångsidigheten hos denna metod, skulle jag säga att detta är en av de mest underutnyttjade magiska metoderna i Python. Jag hoppas att du tyckte om att läsa den här artikeln och låt mig veta i kommentarsektionen om du är intresserad av att veta om de andra magiska metoderna i Python.
 
 
Kanwal Mehreen är en blivande mjukvaruutvecklare med ett stort intresse för datavetenskap och tillämpningar av AI inom medicin. Kanwal valdes ut som Google Generation Scholar 2022 för APAC-regionen. Kanwal älskar att dela teknisk kunskap genom att skriva artiklar om populära ämnen och brinner för att förbättra representationen av kvinnor i teknisk industri.
 

Tidsstämpel:

Mer från KDnuggets