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