Einführung in __getitem__: Eine magische Methode in Python

Einführung in __getitem__: Eine magische Methode in Python

Quellknoten: 2011206

Einführung in __getitem__: Eine magische Methode in Python
Bild vom Autor

Python ist eine magische Sprache mit vielen Konzepten, mit denen selbst fortgeschrittene Benutzer möglicherweise nicht vertraut sind. Dunder- oder magische Methoden sind eine davon. Magische Methoden sind spezielle Methoden, die von doppelten Unterstrichen umgeben sind. Im Gegensatz zu den gewöhnlichen Methoden in Python werden sie nicht explizit aufgerufen. Eine solche magische Methode ist die __getitem__ Methode, die es den Python-Objekten ermöglicht, sich wie Sequenzen oder Container zu verhalten, z. B. Listen, Wörterbücher und Tupel. Es nimmt den Index oder das Slice und ruft den zugehörigen Wert aus der Sammlung ab. Es wird automatisch aufgerufen, wenn wir das verwenden indexer [ ] Operator, um auf die Elemente in Ihrem Objekt zuzugreifen.

Stellen Sie sich diese Methode wie einen Zauberstab vor, der Ihnen die Möglichkeit gibt, die erforderlichen Informationen zu extrahieren, indem Sie einfach ein paar Codezeilen schreiben. Interessant, oder? Diese Methode wird auch häufig in der Datenanalyse und beim maschinellen Lernen eingesetzt. Tauchen wir also tiefer in die Materie ein __getitem__ Methode und entdecken Sie ihre Kraft und Flexibilität.

Ich möchte, dass Sie verstehen, dass Ihre Pflicht als Python-Programmierer mehr ist als nur das Schreiben von Funktionscode. Ihr Code sollte effizient, lesbar und wartbar sein. Benutzen __getitem__ wird Ihnen helfen, diese Ziele zu erreichen. Hier sind einige weitere Vorteile dieser magischen Methode:

  • Reduziert die Speichernutzung, da Sie nur die wesentlichen Informationen extrahieren können, anstatt die gesamte Datenstruktur in den Speicher zu laden
  • Bietet eine größere Flexibilität bei der Handhabung und Bearbeitung der Daten
  • Ermöglicht Ihnen, die Sammlung zu durchlaufen, ohne die Daten zu durchlaufen
  • Verbessert die Funktionalität, indem es Ihnen ermöglicht, erweiterte Indizierungen zu schreiben, die mit den integrierten Typen möglicherweise nicht möglich sind
  • Vereinfacht den Code, da die bekannte Notation verwendet wird

Die Syntax für die __getitem__ Methode ist wie folgt:

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

 

Es definiert das Verhalten der Funktion und übernimmt den Index, auf den Sie zugreifen möchten, in seinem Parameter. Wir können diese Methode wie folgt verwenden:

my_obj[index] 

 

Dies lässt sich auf die Aussage übertragen my_obj.__getitem__(index) unter der Haube. Jetzt denken Sie vielleicht, was ist der Unterschied zum eingebauten? indexer [] Operator? Wo auch immer Sie diese Notation verwenden, ruft Python automatisch auf __getitem__ Methode für Sie und ist die Abkürzung für den Zugriff auf Elemente. Wenn Sie jedoch das Verhalten der Indizierung für benutzerdefinierte Objekte ändern möchten, müssen Sie das explizit aufrufen __getitem__ Methode.

Beispiel #01

Beginnen wir zunächst mit einem einfachen Beispiel. Wir erstellen eine Studentenklasse, die die Liste aller Studenten enthält. Wir können über den Index auf sie zugreifen und berücksichtigen, dass der Index ihre eindeutige Studenten-ID darstellt.

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

 

Ausgang:

 

Jetzt gehen wir zu einem erweiterten Beispiel über, in dem wir das Indizierungsverhalten mithilfe von ändern __getitem__ Methode. Angenommen, ich habe eine Liste mit Zeichenfolgenelementen und möchte das Element immer dann abrufen, wenn ich seine Indexposition eingebe. Außerdem kann ich die Indexposition abrufen, wenn ich die Zeichenfolge selbst eingebe.

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

 

Ausgang:

red
green
0 2

Diese Methode ist äußerst nützlich für die schnelle Suche der Instanzattribute. Angesichts der Flexibilität und Vielseitigkeit dieser Methode würde ich sagen, dass dies eine der am wenigsten genutzten magischen Methoden von Python ist. Ich hoffe, Ihnen hat die Lektüre dieses Artikels gefallen und lassen Sie es mich im Kommentarbereich wissen, wenn Sie mehr über die anderen magischen Methoden in Python erfahren möchten.
 
 
Kanwal Mehreen ist ein aufstrebender Softwareentwickler mit großem Interesse an Data Science und Anwendungen von KI in der Medizin. Kanwal wurde als Google Generation Scholar 2022 für die APAC-Region ausgewählt. Kanwal liebt es, technisches Wissen zu teilen, indem sie Artikel zu Trendthemen schreibt, und setzt sich leidenschaftlich für die Verbesserung der Vertretung von Frauen in der Technologiebranche ein.
 

Zeitstempel:

Mehr von KDnuggets