Operatorüberlastung in Python

Operatorüberlastung in Python
Überladen entspricht der Tendenz einer Methode oder eines Operator. Die Überlastung des Bedieners bedeutet, dass eine längere Bedeutung über ihrer vordefinierten funktionellen Bedeutung angegeben ist. Python-Operatoren funktionieren für integrierte Klassen, aber für verschiedene Typen wirkt derselbe Operator unterschiedlich. Wir werden sehen, wie wir in dieser Anleitung in Python überladen können, wie der Bediener überlastet wird.

Zum Beispiel kann der + Operator zwei Zahlen mathematisch hinzufügen, zwei Listen kombinieren oder Strings verkettet. Hier ist ein einfaches Python -Programm, um einen Blick auf den für Addition und Verkettung verwendeten + Operator zu werfen.

Nun, was kommt, wenn wir diese Operatoren für Objekte in a verwenden benutzerdefinierte Klasse? Nehmen wir das folgende Programm, das versucht, einen Punkt im 2-D-Dimensionsschema zu simulieren. Im Folgenden können Sie das bereits sehen, weil Python nicht verstand Geben Sie Fehler ein wird erzeugt.

Wir können diese Aufgabe in Python über die Überlastung des Bedieners erledigen, aber zunächst verstehen wir die speziellen Methoden.

Spezielle magische Methoden

Klassenmethoden beginnen mit dem doppelt unterstreichen werden in Python als besondere Methoden oder magische Funktionen eingestuft. Die Funktionen, mit denen bestimmte Aktivitäten durchgeführt werden. Die üblichen Methoden, die wir für eine Klasse beschreiben, sind keine solchen Funktionen. Einer von ihnen wäre der __drin_() Funktion, die wir oben erwähnt haben. Jedes Mal, wenn wir ein neues Objekt in dieser Klasse erstellen, heißt es, es heißt es. Wir werden unsere Klassenkonform für integrierte Funktionen über magische Funktionen machen. In Python gibt es mehrere andere besondere Funktionen.

Binäre oder mathematische Operatoren

Hier sind die Details der magischen Funktionen zur Überlastung der Binär- oder Mathematikoperatoren von Python.

Relationale oder Vergleichsbetreiber

Im Folgenden finden Sie die Details der magischen Funktionen zur Überlastung des Python -Vergleichs oder der relationalen Operatoren.

Zuordnungsbetreiber

Hier finden Sie die Details einiger magischer Funktionen zum Überladen der Zuordnungsbetreiber im Python -Code.

Jetzt ist es an der Zeit, ein paar Beispielcodes zu werfen, wenn wir die oben genannten magischen Methoden anwenden und bestimmte Operatoren überladen.

Überladen Sie die binären oder mathematischen Operatoren

Beispiel 01: Addition Operator
Sie müssen die durchsetzen __hinzufügen_() Methode in der Klasse, um die zu überladen + Operator. Große Pflicht kommt mit großer Stärke an. In dieser Methode könnten Sie alles tun, was Sie wollen. Aber es ist viel rationaler, das 'zurückzugeben'Koordination ' Objekt der Koordinatensumme.

Wenn Sie C1 + C2 ausprobiert haben, nennt Python tatsächlich seine Magie .__add __ () Methode als C1.__add __ (C2) oder Koord.__add __ (C1, C2).

Beispiel 02: Multiplikationsoperator
Ebenso können Sie sogar mehrere binäre Operatoren mit magischen Funktionen überladen. Im gleichen Beispiel erhalten wir beim Überladen des Multiplikationsoperators 2, 6 als unsere Antwort auf die magische Funktion.

Beispiel 03: Subtraktionsoperator
Mit dem Subtraktionsoperator haben wir bekommen -1, -1 als unsere Antwort.

Beispiel 04: Power -Operator
Wir haben die überladen Leistung Bediener bei der Verwendung der Power Magic -Funktion; wir haben 1, 8.

Beispiel 05: Modul -Operator
Überlastung des Modul -Operators haben wir die verwendet __mod__ magische Funktion, um den Modul zu erhalten.

Sie können auch die anderen mathematischen Operatoren verwenden, e.G., Division und Bodendivisionsbetreiber für Überlastung.

Überladen Sie die Vergleichsbetreiber

Python beschränkt die Überlastung von Operatoren nicht nur auf binäre oder arithmetische Operatoren. Wir können auch Vergleichsbetreiber überlasten.

Beispiel 01: Weniger als Operator
Angenommen, wir benötigten weniger als die ''<' symbol in unserer 'Koordination ' Klasse zu implementieren. Lassen Sie uns den Wert dieser Argumente aus der Quelle vergleichen und die Antwort geben. Wie immer kann es angewendet werden. Wir haben drei Objekte und vergleicht sie in gedruckten Aussagen. Infolgedessen erhalten wir dieses Objekt C1 Ist weniger als C2, So gibt es aus WAHR. Andererseits, C2 Und C1 Sind besser ausgezeichnet als C3; Deshalb gibt beide falsche Ausgaben aus.

Beispiel 02: Nicht dem Bediener entspricht
Jetzt überladen Nicht gleich (!=)) Vergleichsbetreiber erhalten Sie WAHR Im Falle der ersten und zweiten Druckanweisung, da sie die Bedingung erfüllt, dass beide Objekte nicht gleich sind. Auf der anderen Seite ergibt Object 1 das gleiche wie Objekt 3, was nicht der Anforderung von nicht gleichermaßen entspricht. Deshalb gibt die dritte Druckanweisung aus FALSCH infolge.

Beispiel 03: größer oder gleich dem Operator
Versuchen wir das gleiche Beispiel, um die zu überladen größer als oder gleich zum Bediener. Im Falle der ersten Druckerklärung haben wir 2> = 13, welches ist nicht wahr; Deshalb liefert es falsch. Im zweiten und dritten Druckanweisungen haben wir 13> = 2 Und 2> = 2, bzw. Beide sind WAHR wie sie den Zustand von größer als oder gleichermaßen befriedigen.

Versuchen Sie die anderen Vergleichsbetreiber, e.G., signifikanter als "weniger als" weniger als oder gleich "in Ihrem Code.

Überladen Sie die Zuordnungsbetreiber

Schauen Sie sich ein Beispiel für die Überlastung des Zuordnungsbetreibers an. Wir nehmen ein ähnliches Beispiel mit der Überlastung der '-=' Aufgabenverwalter. Wir haben zwei Objekte mit Werten von Y- und Z -Koordinaten definiert. Erstes Objekt C1 Übergibt seine Werte an an 'selbst.y ' Und 'selbst.z ' Variablen jeweils. Andererseits das Objekt C2 Übergibt seine Werte an an 'andere.y ' Und 'andere.z '.

Objekt C1 hat Werte von selbst.y = 1 Und selbst.z = 1 im Augenblick. Das Objekt C2 Werte 'andere.y = -2 ' Und 'andere.z = -3 ' wurde an übergeben abgezogen vom Objekt C1 Werte. Infolgedessen ergibt sich C1 - C2 selbst.y - Andere.y = 1-(-2) Und selbst.Z - Andere.z = 1-(-3). Das berechnete Ergebnis, das 3 und 4 beträgt.x 'und' Selbst.z 'aufgrund des Zuordnungsbetreibers von' = =.'Bei Druck gibt dieser Code das Ergebnis von Objekt C1 aus, das zwei Variablen enthält selbst.y = 3 Und selbst.z = 4.

Abschluss

Wir versuchen, alle Betreiber in Ihrem Code zu decken, um ein besseres Verständnis der Überlastung des Bedieners zu erhalten.