Verwendung von getitem in Python

Fariba Laiq 14 April 2022
Verwendung von getitem in Python

__getitem__() ist eine magische Methode in Python. Magische Methoden sind solche Methoden, die vom Programmierer beim Schreiben eines Codes nicht direkt aufgerufen werden.

Diese Methoden sind Systemaufrufe, die automatisch am Backend aufgerufen werden. Der Unterschied zwischen magischen und normalen Methoden besteht darin, dass magische Methoden von doppelten Unterstrichen umgeben sind.

Deshalb werden sie auch Dunder-Methoden genannt. Dunder bedeutet hier doppelte Unterstriche. Magische Methoden werden auch zum Überladen von Operatoren verwendet.

Die Verwendung von __getitem__() in einer Klasse ermöglicht es den Instanzen einer Klasse, den Indexer-Operator [ ] mit den Referenzvariablen einer Klasse zu verwenden, um auf den Wert einer Liste, eines Wörterbuchs oder eines Tupels aus einem bestimmten Index zuzugreifen.

Diese Methode wird automatisch aufgerufen, wenn wir den Indexer-Operator mit der Referenzvariablen der Klasse verwenden. Im folgenden Code haben wir eine Klasse Person erstellt und im Konstruktor der Klasse beim Erstellen eines Objekts die Liste der Namen übergeben.

Wir haben explizit die Methode __getitem__() definiert, die den Listenindex als Argument nimmt und den mit diesem Index verknüpften Namen zurückgibt. Hier im Code haben wir die Methode __getitem__() nicht explizit aufgerufen.

Diese Methode wird automatisch aufgerufen, wenn versucht wird, mit dem Operator [ ] auf den Wert an einem bestimmten Listenindex zuzugreifen. Diese Methode wird implizit als p1.__getitem__(1) aufgerufen, wenn wir p1[1] schreiben, um auf die Werte zuzugreifen, die am Index 1 der Liste vorhanden sind.

Beispielcode:

# python 3.x
class Person:
    def __init__(self, names):
        self.names = names

    def __getitem__(self, index):
        return self.names[index]


p1 = Person(["Jhon", "Kevin"])
print(p1[1])

Ausgabe:

# python 3.x
Kevin
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

Verwandter Artikel - Python Class