Das Beispiel zeigt wie getitem, setitem und delitem aufgerufen werden können. Magische Methoden können implizit aufgerufen werden. Um für __getitem__ auf den ersten Index zuzugreifen, schreiben Sie einfach den Namen des Objekts gefolgt von der Indexposition in eckige Klammern.
Am interessantesten ist, dass, wenn wir nach dem Element an der Indexposition 1 fragen, der ganzzahlige Wert 1 zurückgegeben wird, obwohl 1 das nullte Element ist. Was wir hier haben, ist eine Liste, deren Indizierung bei 1 beginnt. Tatsächlich gleicht es die Verwirrung aus, die wir alle hatten, als wir die Listenindizierung zum ersten Mal lernten.
Nun ändern wir den Integer-Wert 1 in der Liste auf 100. Dazu müssen wir setitem aufrufen. Dazu schreiben wir einfach den Namen des Objekts, gefolgt von eckigen Klammern und einer Zuweisung. Um das erste Element in der Liste zu ändern, verwenden wir erneut die Indexposition 1. Wenn wir die Liste erneut ausgeben, können wir deutlich sehen, dass sich das erste Element von 1 zu 100 geändert hat.
Schließlich kann zum Löschen eines Elements aus der Liste __delitem__ definiert werden. Die magische Methode __delitem__ wird aufgerufen, wenn wir das Schlüsselwort del python verwenden, das in den Methodenaufruf __delitem__ . Um unser Listenindexierungsbeispiel weiter auszubauen, löschen wir das erste Element im Index, den ganzzahligen Wert 100. Wenn wir del aufrufen, gefolgt vom Objekt und der Indexposition des Elements, das wir löschen möchten, in diesem Beispiel das erste Element in der Liste 100, können wir jetzt sehen, dass 100 tatsächlich entfernt wurde!
Magische Methoden bieten die Möglichkeit, das Standardverhalten zu ändern. Das Beste ist, dass keine neuen Methodennamen oder eine neue Schnittstelle gelernt werden müssen, sodass die Methoden intuitiv implementiert werden können. Eine Anleitung zur Verwendung dieser in MyCustomList implementierten magischen Methoden finden Sie in der folgenden Tabelle.
Example 2: Die __mul__ magische Methode
Wir können auch den Multiplikationsoperator in unserem Klassendesign verwenden. Da wir von der integrierten Listenklasse erben, können wir zwei MyCustomList-Objekte zusammen komprimieren (da sie sich wie Listenobjekte verhalten) und das zip-Objekt durchlaufen. Während der Iterationen können wir die Elemente in jeder Liste auf Broadcast-Weise mit dem entsprechenden Element in der anderen Liste multiplizieren (siehe __mul__ magic method Code Snippet unten). Dieses Broadcast-Verhalten ähnelt dem in Datenanalysepaketen wie Pandas und Numpy.
Das Beispiel zeigt, dass wir zwei MyCustomList Objekte mit dem Zeichen * zusammenfügen können. Wenn wir den zurückgegebenen Wert in einer Variablen namens list_three erfassen und list_three drucken, wird eine neue Liste ausgegeben. Diese Liste ist das Produkt der Multiplikation der Elemente gegeneinander aus den anderen 2 Listen.