Polymorphismus in Python

Manav Narula 21 Juni 2023
  1. Polymorphismus in Python
  2. Verwenden Sie Klassenmethoden für Polymorphismus in Python
  3. Verwenden Sie Methodenüberschreibung für Polymorphismus in Python
  4. Verwenden Sie das Überladen von Funktionen und Operatoren für Polymorphismus in Python
Polymorphismus in Python

Polymorphismus ist ein Merkmal von OOPs, was bedeutet, dass ein einzelner Name unterschiedliche Funktionen haben kann. Eine einzelne Entität kann verschiedene Formen annehmen.

Dieses Tutorial zeigt, wie Polymorphismus in Python implementiert wird.

Polymorphismus in Python

Der beste Weg, dies zu verstehen, ist die Verwendung der Funktion len(). Diese Funktion wird für verschiedene Objekte unterschiedlich interpretiert.

Bei einer Liste wird die Gesamtzahl der vorhandenen Elemente und bei einer Zeichenfolge die Gesamtzahl der vorhandenen Zeichen zurückgegeben.

Code:

lst = ["delft", "stack"]
s = "delftstack"
print(len(lst), len(s))

Ausgang:

2 10

Eine weitere gängige Funktionalität, die den Polymorphismus in Python veranschaulicht, ist der Operator +. Dieser Operator kann in Python zwischen zwei Zahlen addieren.

Wenn er jedoch mit einer Zeichenfolge verwendet wird, fungiert er als Verkettungsoperator zum Kombinieren zweier Zeichenfolgen.

Code:

a = 5 + 6
s = "delft" + "stack"
print(a, s)

Ausgang:

11 delftstack

Verwenden Sie Klassenmethoden für Polymorphismus in Python

Alles ist ein Objekt in Python und gehört zu einer Klasse. Die Methoden sind den Objekten der Klasse zugeordnet.

Deshalb führen der +-Operator und die len()-Funktion für verschiedene Objekte unterschiedliche Funktionen aus. Der Operator + ruft eine magische Funktion auf, die für verschiedene Objekte unterschiedlich definiert ist.

Wir können unsere Klasse erschaffen und dies erreichen. Zwei Klassen können Funktionen mit demselben Namen haben, aber unterschiedliche Zwecke und unterschiedliche Definitionen haben.

Code:

class A:
    def fun(self):
        print("Class A")


class B:
    def fun(self):
        print("Class B")


ob1 = A()
ob2 = B()
for i in (ob1, ob2):
    i.fun()

Ausgang:

Class A
Class B

Verwenden Sie Methodenüberschreibung für Polymorphismus in Python

Polymorphismus wird in Python auch mit Klassenvererbung in Verbindung gebracht. Vererbung bezieht sich auf eine Klasse, die auf die Merkmale einer anderen Klasse zugreift.

Eine Klasse und ihre Unterklasse können die Funktion mit demselben Namen enthalten, und wir können die Funktionsüberschreibung in Python verwenden. Durch Methodenüberschreibung können wir die bereits definierte Methode in der untergeordneten Klasse implementieren.

Wir können die Funktion entsprechend der untergeordneten Klasse neu definieren.

Code:

class A:
    def fun(self):
        print("Class A")


class B(A):
    def fun(self):
        print("Class B")


ob1 = A()
ob2 = B()
for i in (ob1, ob2):
    i.fun()

Ausgang:

Class A
Class B

Im obigen Codebeispiel erbt die Klasse B von der Klasse A, aber die Methode fun() wird in der Klasse B überschrieben und entsprechend der Klasse definiert.

Wir können auch auf die Funktion fun() aus der Klasse A in der überschriebenen Funktion zugreifen.

Code:

class A:
    def fun(self):
        print("Class A")


class B(A):
    def fun(self):
        A.fun(self)
        print("Class B")


ob2 = B()
ob2.fun()

Ausgang:

Class A
Class B

Verwenden Sie das Überladen von Funktionen und Operatoren für Polymorphismus in Python

Das Überladen von Funktionen ist ein interessantes Feature, das Polymorphismus implementiert. Diese Funktion ist in Python nicht verfügbar, und die zuletzt definierte Funktion wird in Python aufgerufen.

Es ist möglich, Operatoren in Python zu überladen. Wir wissen, dass verschiedene Operatoren je nach Objekttyp unterschiedliche Funktionen ausführen können, deutlich sichtbar mit dem +-Operator.

Dies geschieht, weil es intern eine magische Funktion aufruft, wenn ein Operator verwendet wird. Beispielsweise ruft der Operator + intern die Methode __add__ auf.

Diese magische Funktion hat doppelte Unterstriche vor und nach ihrem Namen. Magische Funktionen sollen nicht direkt aufgerufen werden, aber wir können sie für verschiedene Klassen definieren, um das Verhalten verschiedener Operatoren zu ändern.

Code:

class A:
    def __init__(self, a):
        self.a = a

    def __add__(self, o):
        return self.a + o.a + 2


ob1 = A(5)
ob2 = A(4)
print(ob1 + ob2)

Ausgang:

11

Im obigen Beispiel haben wir den Operator + überladen, indem wir die magische Funktion der Klasse A modifiziert und dem Ergebnis 2 hinzugefügt haben.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn