Der Operator + kann beispielsweise zwei Zahlen mathematisch addieren, zwei Listen kombinieren oder Strings verketten. Hier ist ein einfaches Python-Programm, um einen Blick auf den +-Operator zu zeigen, der für Addition und Verkettung verwendet wird.
Nun, was kommt, wenn wir diese Operatoren für Objekte in a . verwenden benutzerdefinierte Klasse? Nehmen wir das folgende Programm, das versucht, einen Fleck im 2D-Bemaßungsschema zu simulieren. Unten können Sie das bereits sehen, da Python nicht verstanden hat, wie man 2 Koordinateninstanzen verbindet, a Typfehler wird erzeugt.
Wir können diese Aufgabe in Python über das Überladen des Operators erledigen, aber zuerst wollen wir die speziellen Methoden verstehen.
Spezielle magische Methoden
Klassenmethoden, die mit dem beginnen doppelter Unterstrich werden in Python als spezielle Methoden oder magische Funktionen klassifiziert. Die Funktionen, die verwendet werden, um bestimmte Aktivitäten auszuführen. Die üblichen Methoden, die wir für eine Klasse beschreiben, sind keine solchen Funktionen. Einer von ihnen wäre der __drin_() Funktion haben wir oben erwähnt mentioned. Jedes Mal, wenn wir ein neues Objekt in dieser Klasse erstellen, heißt es. Wir werden unsere klassenkonformen eingebauten Funktionen über magische Funktionen rendern. In Python gibt es mehrere andere spezielle Funktionen.
Binäre oder mathematische Operatoren
Hier sind die Details der magischen Funktionen zum Überladen der Python-Binär- oder mathematischen Operatoren.
Vergleichs- oder Vergleichsoperatoren
Nachfolgend finden Sie die Details der magischen Funktionen zum Überladen des Python-Vergleichs oder der relationalen Operatoren.
Zuweisungsoperatoren
Hier sind die Details einiger magischer Funktionen zum Überladen der Zuweisungsoperatoren in Python-Code.
Jetzt ist es an der Zeit, ein paar Beispielcodes zu sehen, wenn wir die oben genannten magischen Methoden verwenden und bestimmte Operatoren überladen.
Überladen Sie die binären oder mathematischen Operatoren
Beispiel 01: Additionsoperator
Sie müssen dies durchsetzen __hinzufügen_() -Methode in der Klasse zum Überladen der + Operator. Große Pflicht kommt mit großer Kraft. Mit dieser Methode können Sie alles tun, was Sie wollen. Aber es ist viel rationaler, die 'Koord' Objekt der Koordinatensumme.
Als Sie c1 + c2 ausprobiert haben, ruft Python tatsächlich seine Magie auf .__add__() Methode als c1.__add__(c2) oder Coord.__add__(c1,c2).
Beispiel 02: Multiplikationsoperator
Ebenso können Sie mit magischen Funktionen sogar mehrere binäre Operatoren überladen. Im gleichen Beispiel oben erhalten wir beim Überladen des Multiplikationsoperators 2, 6 als unsere Antwort auf die Zauberfunktion.
Beispiel 03: Subtraktionsoperator
Mit dem Subtraktionsoperator erhalten wir -1, -1 als unsere Antwort.
Beispiel 04: Stromanbieter
Wir überladen die Leistung Bediener während der Verwendung der Power Magic-Funktion; wir haben 1, 8.
Beispiel 05: Moduloperator
Wir haben den Modulo-Operator überladen und den __mod__ magische Funktion, um den Modul zu erhalten.
Sie können auch die anderen mathematischen Operatoren verwenden, z.G., Teilungs- und Etagenteiler, für Überlastung for.
Überladen Sie die Vergleichsoperatoren
Python beschränkt das Überladen von Operatoren nicht nur auf binäre oder arithmetische Operatoren. Wir können auch Vergleichsoperatoren überladen.
Beispiel 01: Kleiner als Operator
Angenommen, wir benötigen weniger als die '<' symbol in unserer 'Koord' Klasse umgesetzt werden. Vergleichen wir den Wert dieser Argumente aus der Quelle und liefern die Antwort. Es kann wie gewohnt angewendet werden. Wir haben drei Objekte und vergleichen sie in print-Anweisungen. Als Ergebnis erhalten wir dieses Objekt c1 ist Weniger als c2, also gibt es aus Wahr. Andererseits, c2 und c1 sind ausgezeichneter als c3; deshalb beide Falsche Ausgabe.
Beispiel 02: Ungleich Operator
Jetzt überladen die Nicht gleich (!=) Vergleichsoperator erhalten Sie Wahr im Fall der ersten und zweiten print-Anweisung, weil sie die Bedingung erfüllt, dass beide Objekte nicht gleich sind. Andererseits liefert Objekt 1 dasselbe wie Objekt 3, das die Forderung von Ungleich of nicht erfüllt. Deshalb gibt die dritte print-Anweisung aus Falsch als Ergebnis.
Beispiel 03: Größer oder gleich Operator
Versuchen wir das gleiche Beispiel für das Überladen der größer als oder gleich zum Betreiber. Im Fall der ersten print-Anweisung haben wir 2 >= 13, welches ist nicht wahr; deshalb ergibt es False. In der zweiten und dritten Druckaussage haben wir 13>=2 und 2>=2, beziehungsweise. Beide sind Wahr da sie die Bedingung größer oder gleich . erfüllen.
Probieren Sie die anderen Vergleichsoperatoren aus, z.G., signifikanter als, gleich, 'kleiner oder gleich' auch in Ihrem Code.
Überladen Sie die Zuweisungsoperatoren
Sehen Sie sich ein Beispiel für das Überladen von Zuweisungsoperatoren an. Ein ähnliches Beispiel nehmen wir mit der Überladung des '-=' Aufgabenverwalter. Wir haben zwei Objekte mit Werten der y- und z-Koordinaten definiert. Erstes Objekt c1 übergibt seine Werte an 'selbst.y' und 'selbst.z' Variablen bzw. Auf der anderen Seite ist das Objekt c2 übergibt seine Werte an 'andere.y' und 'andere.z'.
Objekt c1 hat Werte von selbst.y=1 und selbst.z=1 jetzt sofort. Das Objekt c2 Werte 'andere.j = -2' und 'andere.z = -3' wurde weitergegeben an abgezogen vom Objekt c1 Werte. Als Ergebnis ergibt sich c1 - c2 selbst.y - andere.y = 1-(-2) und selbst.z - andere.z = 1-(-3). Das berechnete Ergebnis, das 3 und 4 ist, wurde in 'self . gespeichert.x' und 'selbst.z' aufgrund des Zuweisungsoperators von '=.' Beim Drucken gibt dieser Code das Ergebnis von Objekt c1 aus, das zwei Variablen hat selbst.y = 3 und selbst.z = 4.
Fazit
Wir versuchen, alle Operatoren in Ihrem Code abzudecken, um ein besseres Verständnis der Operatorüberladung zu erhalten.