Polymorphismus in Python

Polymorphismus in Python
Polymorphismus bedeutet „viele Formen.”Polymorphismus Ein wichtiges Merkmal der objektorientierten Programmierung (OOP). Wenn die gleiche Methode mehrfach für mehrere Zwecke und in verschiedenen Klassen deklariert wird, wird sie als Polymorphismus bezeichnet. Ein weiteres Merkmal von OOP ist Nachlass, durch die die untergeordnete Klasse erstellt werden kann, indem die Merkmale der übergeordneten Klasse erbt werden. Manchmal erfordert der Programmierer, eine gleichnamige Methode sowohl im Eltern- als auch in den untergeordneten Klassen für verschiedene Zwecke zu deklarieren. Diese Art von Aufgabe kann auch durch die Verwendung von Polymorphismus implementiert werden. In diesem Artikel wird 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 des Polymorphismus zwischen zwei verschiedenen Klassen. Eine Funktion wird verwendet, um das Objekt dieser Klassen zu erstellen. Der Wert der benannten Variablen Farbe wird in der initialisiert __drin__() Methode von beiden 'Papagei' und das 'Strauß'Klassen zum Zeitpunkt der Objekterstellung. Der Merkmale() Die Methode ist in beiden Klassen definiert, aber die Ausgabe der Methode für jede Klasse ist etwas anders. Der Create_object () Funktion wird verwendet, um ein Objekt der Klasse zu erstellen. Diese Funktion wird zweimal ausgeführt, um das Objekt in der '' zu erstellenPapagei'Klasse und in' 'Strauß' Klasse. Jeder wird die Feature () -Methode beider Klassen aufgerufen und die Ausgabe ausdrucken.

#!/usr/bin/env python3
# Definieren Sie die Papageienklasse
Klassenpapagei ():
def __init __ (Selbst, Farbe):
selbst.Farbe = Farbe
Def Features (Selbst):
drucken ("Die Farbe des Papagei ist %s" %Selbst selbst.Farbe)
print ("Der Papagei kann fliegen")
# Definieren Sie die Straußklasse
Klasse ostrich ():
def __init __ (Selbst, Farbe):
selbst.Farbe = Farbe
Def Features (Selbst):
drucken ("Die Farbe des Straußes ist %s" %Selbst.Farbe)
print ("Der Strauß kann nicht fliegen")
# Definieren Sie die Funktion, um die Methode der Klasse aufzurufen
Def create_object (Objekt):
Objekt.Merkmale()
# Objekt der Papageienklasse erstellen
Create_object (papagrieren ('grün'))
# Objekt der Ostrich -Klasse erstellen
Create_object (ostrich ('schwarz und weiß'))

Ausgang

Die folgende Ausgabe zeigt, dass das Objekt der 'Papagei"Klasse wird mit" erstellt "Grün' als die Farbe Wert. Die Funktion druckt die Ausgabe durch Aufrufen der Merkmale() Methode der 'Papagei' Klasse. Als nächstes das Objekt der 'Strauß"Klasse wird mit" erstellt "Schwarz und weiß' als die Farbe Wert. Die Funktion druckt die Ausgabe durch Aufrufen der Merkmale() 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. Der __drin__() Methode von beiden 'Manager' Und 'Sachbearbeiter'Klassen initialisieren die erforderlichen Variablen. Der Polymorphismus wird hier durch Erstellen des post_details () Und Gehalt() Methoden in beiden Klassen. Der Inhalt dieser Methoden ist für jeden dieser Klassen unterschiedlich. Als nächstes werden die Objektvariablen für beide Klassen erstellt und von a iteriert für eine Schleife. In jeder Iteration die post_details () Und Gehalt() Methoden werden aufgefordert, die Ausgabe zu drucken.

#!/usr/bin/env python3
# Definieren Sie eine Klasse namens Manager
Klassenmanager:
Def __init __ (Selbst, Name, Abteilung):
selbst.Name = Name
selbst.post = 'Manager' '
selbst.Abteilung = Abteilung
# Funktion definieren, um Details festzulegen
def post_details (self):
Wenn Selbst.Abteilung.ober () == 'hr':
selbst.Basic = 30000
anders:
selbst.Basic = 25000
selbst.Houserent = 10000
selbst.Transport = 5000
drucken ("Der Beitrag von %s ist %s" %(Selbst.Name, Selbst.Post))
# Funktion definieren, um das Gehalt zu berechnen
Def -Gehalt (Selbst):
Gehalt = Selbst.Basic + Selbst.Houserent + Selbst.Transport
Rückgabegehalt
# Definieren Sie eine Klasse namens Clerk
Klassenangestellter:
def __init __ (Selbst, Name):
selbst.Name = Name
selbst.post = 'Angestellter' '
# Funktion definieren, um Details festzulegen
def post_details (self):
selbst.Basic = 10000
selbst.Transport = 2000
drucken ("Der Beitrag von %s ist %s" %(Selbst.Name, Selbst.Post))
# Funktion definieren, um das Gehalt zu berechnen
Def -Gehalt (Selbst):
Gehalt = Selbst.Basic + Selbst.Transport
Rückgabegehalt
# Objekte für die Klassen erstellen
Manager = Manager ("Kabir", "HR")
Angestellter = Angestellter ("Robin")
# Rufen Sie dieselben Funktionen aus den verschiedenen Klassen an
Für OBJ in (Manager, Angestellter):
obj.post_details ()
drucken ("Das Gehalt ist", obj.Gehalt())

Ausgang

Die folgende Ausgabe zeigt, dass das Objekt der 'Krippe'Klasse wird in der ersten Iteration der verwendet für Schleife und das Gehalt des Managers werden nach der Berechnung gedruckt. Das Objekt der ''Sachbearbeiter'Klasse wird in der zweiten Iteration der verwendet für Schleife und das Gehalt des Angestellten werden nach der Berechnung gedruckt.

Beispiel 3: Polymorphismus in verwandten Klassenmethoden

Das folgende Skript zeigt die Verwendung des Polymorphismus zwischen zwei Kinderklassen. Hier beide 'Dreieck' Und 'Kreis"sind die Kinderklassen der übergeordneten Klasse namens"Geometrische Figur.'Gemäß der Erbschaft kann die untergeordnete Klasse auf alle Variablen und Methoden der übergeordneten Klasse zugreifen. Der __drin__() Methode der 'Geometrische Figur'Die Klasse wird in beiden Kinderklassen verwendet, um die Variable zu initialisieren Name durch Verwendung der super() Methode. Die Werte der Base Und Höhe des 'Dreieck'Die Klasse wird zum Zeitpunkt der Objekterstellung initialisiert. Ebenso die Radiuswerte der ''Kreis'Die Klasse wird zum Zeitpunkt der Objekterstellung initialisiert. Die Formel zur Berechnung der Fläche eines Dreiecks ist ½ × Base × Höhe, welches in der implementiert ist Bereich() Methode der 'Dreieck' Klasse. Die Formel zur Berechnung der Fläche eines Kreises ist 3.14 × (Radius)2, welches 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 vom Benutzer ein Zeichenfolgenwert übernommen, um ein Objekt zu erstellen und die Methode basierend auf dem Wert zu rufen. Wenn das Benutzer "Dreieck" tippt, dann ein Objekt der 'Dreieck' Die Klasse wird erstellt, und wenn der Benutzer "Kreis" ist, dann ist ein Objekt der '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
# Definieren Sie die übergeordnete Klasse
Klasse Geometric_shape:
def __init __ (Selbst, Name):
selbst.Name = Name
# Definieren Sie die Kinderklasse zur Berechnung des Dreiecksbereichs
Klassendreieck (geometrisch_shape):
Def __init __ (Selbst, Name, Basis, Höhe):
super().__init __ (Name)
selbst.Basis = Basis
selbst.Höhe = Höhe
Def Area (Selbst):
Ergebnis = 0.5 * Selbst.Basis * Selbst.Höhe
print ("\ n der Fläche des %s = %5.2f " %(Selbst.Name, Ergebnis))
# Definieren Sie die untergeordnete Klasse für die Berechnung der Kreisfläche
Klassenkreis (geometrisch_shape):
def __init __ (Selbst, Name, Radius):
super().__init __ (Name)
selbst.Radius = Radius
Def Area (Selbst):
Ergebnis = 3.14 * Selbst.Radius ** 2
print ("\ n der Fläche des %s = %5.2f " %(Selbst.Name, Ergebnis))
cal_area = input ("Welchen Bereich möchten Sie berechnen?? Dreieck/Kreis \ n ")
Wenn cal_area.ober () == 'Dreieck':
Base = float (input ('Eingeben Sie die Basis des Dreiecks:'))
Höhe = float (input ('Eingeben Sie die Höhe des Dreiecks:'))
OBJ = Dreieck ('Dreieck', Basis, Höhe)
obj.Bereich()
elif cal_area.ober () == 'Kreis':
radius = float (Eingabe ('Eingänglich in den Radius des Kreises:'))
obj = circle ('circle', Radius)
obj.Bereich()
anders:
print ("falsche Eingabe")

Ausgang

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

Abschluss

In diesem Artikel wurden einfache Beispiele verwendet, um drei verschiedene Verwendungen des 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 hat den Lesern geholfen, mehr darüber zu erfahren.