Python

Polymorphismus in Python

Polymorphismus in Python
Polymorphismus bedeutet „viele Formen“.” Polymorphismus ein wichtiges Merkmal der objektorientierten Programmierung (OOP).  Wenn dieselbe Methode mehrmals, für mehrere Zwecke und in verschiedenen Klassen deklariert wird, wird sie Polymorphismus genannt. Ein weiteres Merkmal von OOP ist Erbe, über die die untergeordnete Klasse erstellt werden kann, indem die Merkmale der übergeordneten Klasse geerbt werden. Manchmal muss der Programmierer für verschiedene Zwecke eine Methode mit demselben Namen sowohl in der übergeordneten als auch in der untergeordneten Klasse deklarieren. Diese Art von Aufgabe kann auch durch Verwendung von Polymorphismus implementiert werden. Dieser Artikel erklärt, wie Polymorphismus in der objektorientierten Programmierung (OOP) definiert werden kann.

Beispiel 1: Polymorphismus mit Funktionen und Objekten

Das folgende Skript zeigt die Verwendung von Polymorphismus zwischen zwei verschiedenen Klassen. Eine Funktion wird verwendet, um das Objekt dieser Klassen zu erstellen. Der Wert der Variablen namens Farbe wird im . initialisiert __drin__() Methode sowohl der 'Papagei' und der 'Strauß' Klassen zum Zeitpunkt der Objekterstellung. Das Eigenschaften() Methode ist in beiden Klassen definiert, aber die Ausgabe der Methode für jede Klasse ist etwas anders. Das Create_Object() Funktion wird verwendet, um ein Objekt der Klasse zu erstellen. Diese Funktion wird zweimal ausgeführt, um das Objekt im 'Papagei' Klasse und  in der 'Strauß'Klasse. Jede ruft die Methode features() beider Klassen auf und gibt die Ausgabe aus.

#!/usr/bin/env python3
# Definiere die Papageienklasse
Klasse Papagei():
def __init__(self,color):
selbst.Farbe = Farbe
def Funktionen (selbst):
print("Die Farbe des Papageis ist %s" %self.Farbe)
print("Der Papagei kann fliegen")
# Definiere die Straußenklasse
Klasse Strauß():
def __init__(self,color):
selbst.Farbe = Farbe
def Funktionen (selbst):
print("Die Farbe des Straußes ist %s" %self.Farbe)
print("Der Strauß kann nicht fliegen")
# Definieren Sie die Funktion zum Aufrufen der Methode der Klasse
def Create_Object(Objekt):
Objekt.Eigenschaften()
# Objekt der Parrot-Klasse erstellen
Create_Object(Papagei('Grün'))
# Objekt der Strauß-Klasse erstellen
Create_Object(Ostrich('Schwarzweiß'))

Ausgabe

Die folgende Ausgabe zeigt, dass das Objekt des 'Papagei' Klasse wird erstellt mit 'Grün' als die Farbe Wert. Die Funktion druckt die Ausgabe durch Aufrufen der Eigenschaften() Methode der 'Papagei'Klasse. Als nächstes wird das Objekt der 'Strauß' Klasse wird erstellt mit 'Schwarz und weiß' als die Farbe Wert. Die Funktion druckt die Ausgabe durch Aufrufen der Eigenschaften() Methode der 'Strauß'Klasse.

Beispiel 2: Polymorphismus in nicht verwandten Klassenmethoden

Wie im vorherigen Beispiel zeigt das folgende Skript die Verwendung von Polymorphismus in zwei verschiedenen Klassen, aber es wird keine benutzerdefinierte Funktion verwendet, um das Objekt zu deklarieren. Das __drin__() Methode sowohl der 'Manager' und 'Verkäufer'-Klassen initialisieren die notwendigen Variablen. Polymorphismus wird hier implementiert, indem die post_details() und Gehalt() Methoden innerhalb beider Klassen. Der Inhalt dieser Methoden ist für jede dieser Klassen unterschiedlich. Als nächstes werden die Objektvariablen für beide Klassen erstellt und durch a . iteriert zum eine Schleife. In jeder Iteration wird die post_details() und Gehalt() Methoden werden aufgerufen, um die Ausgabe zu drucken.

#!/usr/bin/env python3
# Definieren Sie eine Klasse namens Manager
Klassenleiter:
def __init__(selbst, Name, Abteilung):
selbst.Name = Name
selbst.post = 'Manager'
selbst.Abteilung = Abteilung
# Funktion zum Festlegen von Details definieren
def post_details(selbst):
wenn selbst.Abteilung.obere() == 'HR':
selbst.Basis = 30000
sonst:
selbst.Basis = 25000
selbst.Hausmiete = 10000
selbst.Transport = 5000
print("Der Beitrag von %s ist %s" %(self.Name, ich.Post))
# Funktion zur Gehaltsberechnung definieren
def Gehalt (selbst):
Gehalt = selbst.einfach + selbst.HausMiete + Selbst.Transport
Gehalt zurückgeben
# Definieren Sie eine Klasse namens Clerk
Klasse Sachbearbeiter:
def __init__(selbst, Name):
selbst.Name = Name
selbst.post = 'Sachbearbeiter'
# Funktion zum Festlegen von Details definieren
def post_details(selbst):
selbst.Basis = 10000
selbst.Transport = 2000
print("Der Beitrag von %s ist %s" %(self.Name, ich.Post))
# Funktion zur Gehaltsberechnung definieren
def Gehalt (selbst):
Gehalt = selbst.einfach + selbst.Transport
Gehalt zurückgeben
# Objekte für die Klassen erstellen
manager = Manager("Kabir", "hr")
Angestellter = Angestellter("Robin")
# Rufen Sie die gleichen Funktionen aus den verschiedenen Klassen auf
für obj in (Manager, Sachbearbeiter):
obj.post_details()
print("Das Gehalt ist ",obj.Gehalt())

Ausgabe

Die folgende Ausgabe zeigt, dass das Objekt des 'Krippe'-Klasse wird in der ersten Iteration der zum Schleife und das Gehalt des Managers wird nach der Berechnung gedruckt. Das Objekt der 'Verkäufer'-Klasse wird in der zweiten Iteration der zum Schleife und das Gehalt des Sachbearbeiters wird nach der Berechnung ausgedruckt.

Beispiel 3: Polymorphismus in verwandten Klassenmethoden

Das folgende Skript zeigt die Verwendung von Polymorphismus zwischen zwei untergeordneten Klassen. Hier beide 'Dreieck' und 'Kreis' sind die untergeordneten Klassen der übergeordneten Klasse mit dem Namen 'Geometrische Figur.' Entsprechend der Vererbung kann die Kindklasse auf alle Variablen und Methoden der Elternklasse zugreifen. Das __drin__() Methode der 'Geometrische Figur'-Klasse wird in beiden untergeordneten Klassen verwendet, um die Variable zu initialisieren Name mit der Super() Methode. Die Werte der Base und Höhe des 'Dreieck'-Klasse wird zum Zeitpunkt der Objekterstellung initialisiert. Ebenso werden die Radiuswerte der 'Kreis'-Klasse wird zum Zeitpunkt der Objekterstellung initialisiert. Die Formel zur Berechnung der Fläche eines Dreiecks lautet ½ × Base × Höhe, die in der implementiert ist Bereich() Methode der  Dreieck'Klasse. Die Formel zur Berechnung der Kreisfläche lautet 3.14 × (Radius)2, die in der implementiert ist Bereich() Methode der 'Kreis'Klasse. Die Namen beider Methoden sind hier gleich, aber der Zweck ist anders. Als nächstes wird ein Zeichenfolgenwert vom Benutzer genommen, um ein Objekt zu erstellen und die Methode basierend auf dem Wert aufzurufen. Wenn der Benutzer 'Dreieck' eingibt, wird ein Objekt der 'Dreieck' Klasse erstellt, und wenn der Benutzer 'Kreis' eingibt, dann wird ein Objekt der of 'Kreis' Klasse wird erstellt. Wenn der Benutzer einen Text ohne 'Dreieck' oder 'Kreis' eingibt, wird kein Objekt erstellt und eine Fehlermeldung wird gedruckt.

#!/usr/bin/env python3
# Definiere die Elternklasse
Klasse Geometric_Shape:
def __init__(selbst, Name):
selbst.Name = Name
# Unterklasse für die Berechnung der Fläche des Dreiecks definieren
Klasse Dreieck (Geometric_Shape):
def __init__(self,name, base, height):
Super().__init__(Name)
selbst.Basis = Basis
selbst.Höhe = Höhe
def Bereich (selbst):
Ergebnis = 0.5 * selbst.Basis * selbst.Höhe
print("\nDie Fläche des %s = %5.2f" %(selbst.Name, Ergebnis))
# Unterklasse für die Berechnung der Kreisfläche definieren
Klasse Circle (Geometric_Shape):
def __init__(self,name, radius):
Super().__init__(Name)
selbst.Radius = Radius
def Bereich (selbst):
Ergebnis = 3.14 * selbst.Radius**2
print("\nDie Fläche des %s = %5.2f" %(selbst.Name, Ergebnis))
cal_area=input("Welche Fläche möchtest du berechnen? Dreieck/Kreis\n")
wenn cal_area.obere()== 'DREIECK':
base = float(input('Geben Sie die Basis des Dreiecks ein:'))
height = float(input('Geben Sie die Höhe des Dreiecks ein:'))
obj = Dreieck('Dreieck',Basis,Höhe)
obj.Bereich()
elif cal_area.obere()== 'KREIS':
radius = float(input('Geben Sie den Radius des Kreises ein:'))
obj = Kreis('Kreis',Radius)
obj.Bereich()
sonst:
print("Falsche Eingabe")

Ausgabe

In der folgenden Ausgabe wird das Skript zweimal ausgeführt. Das erste Mal, Dreieck als Eingabe genommen und das Objekt wird mit drei Werten initialisiert, 'Dreieck', Base, und Höhe. Diese Werte werden dann verwendet, um die Fläche des Dreiecks zu berechnen und die Ausgabe wird gedruckt. Das zweite Mal, Kreis als Eingabe genommen und das Objekt wird mit zwei Werten initialisiert, 'Kreis' und Radius. Diese Werte werden dann verwendet, um die Fläche des Kreises zu berechnen und die Ausgabe wird gedruckt.

Fazit

In diesem Artikel wurden einfache Beispiele verwendet, um drei verschiedene Verwendungen von Polymorphismus in Python zu erklären. Das Konzept des Polymorphismus kann auch ohne Klassen angewendet werden, eine Methode, die hier nicht erklärt wird. Dieser Artikel half den Lesern, mehr darüber zu erfahren, wie man Polymorphismus in der objektorientierten basierten Python-Programmierung anwendet.

So verwenden Sie die GameConqueror-Cheat-Engine unter Linux
Der Artikel enthält eine Anleitung zur Verwendung der GameConqueror-Cheat-Engine unter Linux. Viele Benutzer, die Spiele unter Windows spielen, verwen...
Beste Spielkonsolen-Emulatoren für Linux
Dieser Artikel listet beliebte Spielekonsolen-Emulationssoftware auf, die für Linux verfügbar ist. Emulation ist eine Softwarekompatibilitätsschicht, ...
Beste Linux-Distributionen für Gaming im Jahr 2021
Das Linux-Betriebssystem hat sich weit von seinem ursprünglichen, einfachen, serverbasierten Aussehen entfernt. Dieses Betriebssystem hat sich in den ...