Was ist Polymorphismus in Python? Polymorphismus mit Beispielen erklärt

Veröffentlicht: 2021-03-05

Inhaltsverzeichnis

Einführung

Python ist eine hochrangige, interpretierte und Open-Source-Programmiersprache. Es hat bei vielen Programmierern und Entwicklern viel Aufmerksamkeit erregt, weil es Bibliotheken unterstützt, die bei vielen Aufgaben wie der explorativen Datenanalyse, der GUI-Programmierung usw. helfen. Auch die Programmierung in Python ist sehr interessant.

Wir werden in diesem Artikel ein interessantes Feature von Python besprechen. Also lasst uns anfangen!

Was ist Polymorphismus?

Das Wort Polymorphismus leitet sich vom griechischen Wort Poly (viele) und Morphismus (Formen) ab. Dies bedeutet, dass ein einzelner Funktionsname oder Methodenname mehrere Formen haben kann. Und dies erfüllt den Wunsch, Codeduplizierungen in der Implementierung zu vermeiden.

Aber der Polymorphismus in Python unterscheidet sich ein wenig vom Polymorphismus in anderen Programmiersprachen. Programmiersprachen wie Java und C++ unterstützen Polymorphismus zur Kompilierzeit (Methodenüberladung). Beim Überladen von Methoden können mehrere Methoden denselben Methodennamen haben, sich aber in ihrer Parametersignatur unterscheiden. Diese Funktion wird von Python nicht unterstützt. Wenn mehrere Methoden dieselbe Funktion haben, überschreibt die neueste Funktionsimplementierung die frühere Funktionsimplementierung.

Funktionspolymorphismus

Der Funktionspolymorphismus in Python kann in zwei benutzerdefinierte Polymorphismen und vordefinierte Polymorphismen eingeteilt werden.

Wir können einen benutzerdefinierten Polymorphismus implementieren, um dieselbe Funktion mit einer anderen Parametersignatur aufzurufen, und dies kann als kleine Kompensation für die Nichtverfügbarkeit der Methodenüberladung in Python betrachtet werden. Lassen Sie uns einen Beispielcode durchgehen

def mul (a,b,c= 1 ):
gib a*b*c zurück;

print(mul( 1 , 2 , 3 ))
print(mul( 1 , 2 ))

Obwohl die Anzahl der übergebenen Parameter im obigen Code nicht gleich ist, verweisen beide Druckanweisungen auf dieselbe Methode. Beim zweiten Funktionsaufruf wird dem Parameter c der Defaultwert 1 zugewiesen.

Ebenso weisen nur wenige vordefinierte Methoden in Python Polymorphismusmerkmale auf, bei denen eine einzelne Methode Parameter verschiedener Datentypen akzeptieren kann. Methoden wie len() weisen diese Funktion auf. Und hier ist der Code, um das zu veranschaulichen.

print(len([ 1 , 2 , 3 , 4 ]))
print(len(( 1 , 2 , 3 , 4 )))
print(len( „python“ ))
print(len({ „key1“ : „value1“ , „key2“ : „value2“ }))

Im obigen Code wird dieselbe Methode len() für eine Liste, ein Tupel, einen String und ein Wörterbuch verwendet.

Kasse: Python-Anwendungen in der realen Welt

Bedienerüberladung

Ein Operator wie „+“ kann auf mehrere Arten verwendet werden. Beispielsweise kann es verwendet werden, um zwei Zahlen, Zeichenfolgen sowie Listen usw. hinzuzufügen. Und hier ist der Code, um dies zu demonstrieren.

l1=[ 1 , 2 , 3 ]
l2=[ 3 , 4 , 5 ]

n1= 2
n2= 3

s1= „Hallo“
s2= „dort“

print(l+l1)
drucken(s1+s2)
print(n1+n2)

Methodenüberschreibung

Das Überschreiben von Methoden wird auch als Laufzeitpolymorphismus betrachtet und von vielen Sprachen wie Java, C++ und Python unterstützt.

Diese Funktion bezieht sich auf die Vererbung, eine untergeordnete Klasse in Python erbt Mitgliedsfunktionen und Mitgliedsvariablen von ihrer übergeordneten Klasse. Und wenn wir der Meinung sind, dass die Implementierung der Methode der übergeordneten Klasse nicht relevant ist, können wir diese Methode in der untergeordneten Klasse überschreiben. Und das Ändern der Elementfunktionen gemäß den Anforderungen in der untergeordneten Klasse wird als Methodenüberschreibung bezeichnet.

Klasse Zweirad :
def Kraftstoff (selbst):
print( "Zweirad braucht Treibstoff zum Fahren" )
def Kapazität (selbst):
print( „Fahrräder sind für maximal 2 Personen geeignet“ )

Klasse electric_bike (Zweirad):
def Kraftstoff (selbst):
print( „Elektrofahrräder werden mit einer Batterie betrieben“ )
Klasse petrol_bike (Zweirad):
def Kraftstoff (selbst):
print( "Benzinrad fährt mit Benzin" )
bike=two_wheeler()
ebike=elektrisches_fahrrad()
pbike=benzinrad()

Fahrrad.Kraftstoff ()
Fahrrad. Kapazität ()
ebike.kraftstoff ()
ebike.capacity()
pbike.fuel()
pbike.capacity()

Im obigen Code ist two_wheeler die übergeordnete Klasse und electric_bike, petrol_bike sind die untergeordneten Klassen. Und die Methoden fuel(), capacity() werden von den Kindklassen electric_bike und petrol_bike geerbt. Jetzt können wir die Implementierung der Methoden bei Bedarf aktualisieren, und innerhalb der electric_bike-Klasse haben wir die fuel()-Methode neu implementiert, ebenso haben wir die fuel()-Methode in der petrol_bike-Klasse neu implementiert.

Zum Beispiel druckt im Code ebike.fuel() „Elektrofahrräder laufen mit Batterie“ und pbike.fuel() druckt Benzinfahrräder mit Benzin“.

Polymorphismus in Klassenmethoden

Python lässt zu, dass verschiedene Klassen denselben Methodennamen haben, und dies fällt unter die Polymorphismus-Funktion. Und der Aufruf der Methode basiert auf dem Objekt, das wir zum Aufrufen der Methode verwenden.

Klasse Fahrrad :
def Kraftstoff (selbst):
print( „Fahrrad braucht keinen Sprit!“ )
def Kapazität (selbst):
print( „Fahrräder sind für Einzelfahrten geeignet“ )

Klasse Elektrofahrrad :
def Kraftstoff (selbst):
print( „Elektrofahrräder laufen mit Batterie“ )
def Kapazität (selbst):
print( „Elektrofahrräder sind für maximal 2 Personen geeignet“ )

Klasse petrol_bike :
def Kraftstoff (selbst):
print( "Benzinrad fährt mit Benzin" )
def Kapazität (selbst):
print( „Benzinfahrräder sind für maximal 2 Personen geeignet“ )

ecobike=fahrrad()
ebike=elektrisches_fahrrad()
pbike=benzinrad()
l=[ecobike,ebike,pbike]

für obj in l:
obj.fuel()
obj.capacity()

Im obigen Code haben wir drei Objekte der drei Klassen bicycle, electric_bike und petrol_bike erstellt. Und alle drei Klassen haben dieselben Methodennamen. Nun ist es die Aufgabe des Compilers zu entscheiden, welche Methode aufgerufen werden muss, basierend auf dem Objekttyp, der zum Aufrufen der Methode verwendet wird.

Zum Beispiel ruft ecobike.fuel() die fuel()-Methode der Fahrradklasse auf und ebike.fuel() ruft die fuel()-Methode der electric_bike-Klasse auf. Wir hängen alle diese Objekte an eine Liste an und rufen bei jeder Iteration die gleichen Funktionsnamen auf, aber der Objekttyp, der die Methode aufruft, ändert sich. In der ersten Iteration werden Methoden der Fahrradklasse aufgerufen, in weiteren Iterationen Methoden von electric_bike, petrol_bike.

Lesen Sie: Ideen und Themen für Python-Projekte

Fazit

In diesem Artikel haben wir verstanden, was Polymorphismus bedeutet, und besprochen, wie sich Python beim Überladen von Methoden unterscheidet. Demonstrationen verschiedener Möglichkeiten des Polymorphismus in Pythons durchgegangen, z. B. Operatorüberladung, Funktionspolymorphismus, Methodenüberschreibung und Polymorphismus in Klassenmethoden.

Jetzt, da Sie sich der Polymorphie in Python bewusst sind, implementieren Sie Ihren nächsten Python-Code mit all diesen Funktionen!

Wenn Sie neugierig sind, etwas über Data Science zu lernen, schauen Sie sich das PG Diploma in Data Science von IIIT-B & upGrad an, das für Berufstätige entwickelt wurde und mehr als 10 Fallstudien und Projekte, praktische Workshops, Mentoring mit Branchenexperten, 1- on-1 mit Mentoren aus der Branche, mehr als 400 Stunden Lern- und Jobunterstützung bei Top-Unternehmen.

Bereiten Sie sich auf eine Karriere der Zukunft vor

UPGRAD UND IIIT-BANGALORES PG-DIPLOM IN DATENWISSENSCHAFT
REGISTRIEREN SIE SICH JETZT @ UPGRAD