Python -Polymorphismus

Python -Polymorphismus

Einführung

Polymorphismus ist ein weiterer wichtiger Aspekt der objektorientierten Programmierung. Keine Warcraft -Fans, es hat nichts damit zu tun, Menschen in Schafe zu verwandeln. Das wäre viel cooler. Stattdessen ermöglicht Polymorphismus Methoden und Funktionen, Klassen mit ähnlichen Funktionen auf die gleiche Weise zu verwenden.

Der Polymorphismus senkt die Menge an Code, die Sie schreiben müssen, indem Sie Redundanz auf logische und aussagekräftige Weise beseitigen. Es stützt sich auf Sie, den Programmierer, um in Ihrem Design und in den Ähnlichkeiten in Objekten klug zu sein.

Was ist Polymorphismus?

Polymorphismus ist eines der Dinge, die in einem einzelnen Wort oder Phrase schwer zu definieren sind. Der Begriff nimmt in verschiedenen Programmiersprachen leicht unterschiedliche Formen an, was es etwas schwieriger macht, genau festzuhalten. Im Allgemeinen und in Python ist es die Fähigkeit mehrerer verschiedener Objekte, die aus verschiedenen Klassen auf die gleiche Weise verwendet werden können.

Stellen Sie sich vor, Sie müssen eine Funktion schreiben, die das aufruft Move_forward Methode auf jeder Art von Auto, die es übergeben wird. Jedes Objekt, das aus der ursprünglichen „Car“ -Klasse erstellt wurde, oder einer der Unterklassen, die es erweitern, sollte eine haben Move_forward Methode, auch wenn sie in einigen Unterklassen etwas anderes etwas anders machen. Dies bedeutet, dass Sie durch Polymorphismus eine einzelne Funktion schreiben können, die ein „Auto“ -Objekt und ruft auf Move_forward. Da alle Objekte, die aus den Unterklassen von „Auto“ instanziiert wurden.

Bitte beachten Sie, dass die Spezifikation einer einzelnen Superklasse als Objekttyp in Python nicht ganz erforderlich ist. Python ist nicht stark getippt, sodass Sie nicht explizit definieren müssen, welche variablen Typen eine Methode oder Funktion einnimmt. In Sprachen wie Java spielt dies eine Rolle darin, wie sich Polymorphismus verhält. In Python ist es jedoch eine gute Idee, sich in diese Richtung zu überlegen, um sicherzustellen, dass die von Ihnen bestehenden Objekte die Methode oder Eigenschaft verwendet.

Verwenden Sie es in Python

Nun würde es wirklich helfen, all dies in Aktion zu sehen. Es ist nicht so komplex, wie Sie es wahrscheinlich gerade denken. Stellen Sie zunächst sicher, dass Sie mit den Beispielklassen eingerichtet sind. Wenn Sie sie noch nicht haben, sind sie direkt unten.

Klassenauto (Objekt): def __init __ (self, make = 'ford', model = 'Pinto', Jahr = '1971', Kilometerleistung = 253812, color = 'orange'): self.__make = selbst machen.__model = Modell Selbst.__year = Jahr selbst.__mileage = Kilometer Selbst.__color = color def set_make (self, make): self.__make = Machen Sie Def get_make (Selbst): Rückgabe selbst.__Make Def set_model (self, modell): self.__model = Modell def get_model (Selbst): Return Self zurück.__model def set_year (Selbst, Jahr): Selbst.__year = Jahr def get_year (Selbst): Return Self.__year def set_mileage (Selbst, Kilometerstand): Selbst.__mileage = Kilometerleistung def get_mileage (Selbst): Return Self.__mileage def set_color (Selbst, Farbe): Selbst.__color = color def get_color (self): Rückgabe selbst.__color def move_forward (Selbst, Geschwindigkeit): Druck ("Ihr %s bewegt sich mit %s" %(Selbst.__model, Geschwindigkeit)) def move_backward (Selbst, Geschwindigkeit): Druck ("Rückwärtsbewegung bei % s" % Geschwindigkeit) Klasse Musclecar (Auto): def __init __ (self, make = 'ford', model = 'mustang', Jahr = '1965', Kilometerleistung = 54032, Color = 'Blue', HP = 325): Super ().__init __ (machen, Modell, Jahr, Kilometerstand, Farbe) Selbst.__hp = HP def set_hp (self, hp): self.__HP = HP def get_hp (Selbst): Rückgabe selbst.__HP def Drag_race (Selbst, Gegner): if (Selbst.__HP> Gegner.get_hp ()): return "Du gewinnst!"Sonst: Rückkehr" Sie verlieren!"Def Trade_Up (Selbst, Jahr, Farbe): Super ().set_year (Jahr) super ().set_color (color) super ().set_mileage (0) 

Mit den eingerichteten Demo -Klassen können Sie eine schnelle Funktion testen, die den Polymorphismus zum Aufrufen verwendet Move_forward.

newMusclecar = musclecar () newcar = car () def Go_25 (CAR_OBJECT): CAR_Object.move_forward ("25mph") go_25 (newcar) go_25 (newmusclecar) 

Beide Funktionsaufrufe verhalten sich genau gleich, obwohl sie verschiedene Objekte übergeben wurden, die aus verschiedenen Klassen erstellt wurden. Dank des Polymorphismus müssen Sie nicht zwei verschiedene Funktionen schreiben und können die ähnlichen Eigenschaften der Objekte verwenden, um nur eine Funktion zu schreiben.

Versuchen Sie, einen der der Überschreibung zu überschreiben Move_forward Methode in der Klasse „Musclecar“. Führen Sie die Funktion erneut aus und sehen Sie, was passiert.

 Klasse Musclecar (Auto):… Def Move_forward (Selbst, Geschwindigkeit): Print ("Ihr fantastisches %s brüllt die Straße hinunter bei %s" %(Selbst selbst.__model, Geschwindigkeit))… 

Wenn die Funktion die aufruft Move_forward Methode auf dem Muscle -Car -Objekt funktioniert immer noch perfekt und die überschriebene Version der Methode wird verwendet.

Gedanken schließen

Polymorphismus klingt so, als wäre es ein furchtbar komplexes Konzept, aber sein Name ist etwas falsch. Das Konzept selbst ist nicht so einschüchternd und es hilft sogar, die Gesamtstruktur Ihres Codes zu vereinfachen.

Ein gemeinsames Thema in der objektorientierten Programmierung ist die Beseitigung der Redundanz durch den wiederverwendbaren und anpassbaren Code. Polymorphismus ist ein wichtiger Teil dieses Bildes.

Übungen

  1. Verwenden Sie die Beispielunterricht.
  2. Erstellen Sie eine Funktion, die mit einem der beiden Arten von "Auto" -Objekt interagieren kann.
  3. Rufen Sie Ihre Funktion zweimal an und geben Sie sie beide Objekte weiter.
  4. Überschreiben Sie eine der Methoden in der Musclecar -Klasse. Stellen Sie sicher, dass Sie die Parameter, die sie akzeptiert, nicht drastisch ändern.
  5. Rufen Sie Ihre Funktion erneut an.
  6. Erstellen Sie eine neue Klasse, die aus der "Auto" -Klasse erbt.
  7. Instantieren Sie ein neues Objekt aus Ihrer neu erstellten Klasse. Übergeben Sie das Objekt an Ihre Funktion.

Verwandte Linux -Tutorials:

  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Dinge zu installieren auf Ubuntu 20.04
  • So erstellen Sie eine Tkinter -Anwendung mithilfe eines objektorientierten…
  • Wie man Nautilus-Erweiterungen mit Nautilus-Python schreibt
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • ZFS auf Ubuntu 20 konfigurieren.04
  • Mastering -Bash -Skriptschleifen beherrschen
  • Wie man mit der Woocommerce -REST -API mit Python arbeitet
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • EEPROM CH341A -Programmierer - Lesen und schreiben Sie Daten, um auf…