Python

Operator-Überladung in Python

Operator-Überladung in Python
Überladen entspricht der Tendenz einer Methode oder eines Operators, im Sinne einer Programmierung auf vielfältige Weise zu handeln, basierend auf den Parametern, die der Technik bereitgestellt werden, oder den Operanden, an denen der Operator arbeitet. Operator-Überladung bedeutet, dass eine verlängerte Bedeutung über ihrer vordefinierten funktionalen Bedeutung liegt.  Python-Operatoren funktionieren für integrierte Klassen, aber für verschiedene Typen verhält sich derselbe Operator unterschiedlich. In diesem Handbuch werden wir sehen, wie wir Operatoren in Python überladen können.

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.

Top 10 Spiele zum Spielen auf Ubuntu
Die Windows-Plattform war eine der dominierenden Plattformen für Spiele aufgrund des großen Prozentsatzes von Spielen, die heute entwickelt werden, um...
Die 5 besten Arcade-Spiele für Linux
Heutzutage sind Computer ernsthafte Maschinen, die zum Spielen verwendet werden. Wenn du den neuen Highscore nicht bekommst, weißt du was ich meine. I...
Schlacht um Wesnoth 1.13.6 Entwicklung veröffentlicht
Schlacht um Wesnoth 1.13.6, das letzten Monat veröffentlicht wurde, ist die sechste Entwicklungsversion im 1.13.x-Serie und bietet eine Reihe von Verb...