Programmierung & Skripten

Python -Erbschaft

Python -Erbschaft

Einführung

Die Vererbung ist ein weiteres Schlüsselkonzept in der objektorientierten Programmierung und spielt eine wichtige Rolle beim Aufbau von Klassen. Es ermöglicht eine Klasse, auf einem vorhandenen zu basieren.

Als Sie anfingen, Python -Kurse zu schreiben, wurde Ihnen gesagt. Nun, jetzt ist es an der Zeit, darüber nachzudenken.

"Objekt" ist eigentlich die Basisklasse, aus der alle Python -Klassen erben. Es definiert eine grundlegende Reihe von Funktionen, die alle Pythonklassen haben sollten. Wenn Sie eine neue Klasse erstellen, stellen Sie sicher, dass diese Klasse über diese grundlegende Funktionalität verfügt.

Kurz gesagt, Erbschaft ist eine gute Möglichkeit, Kurse zu kategorisieren und sicherzustellen, dass Sie sich nicht unnötig wiederholen.

Was ist Vererbung?

Auch in der realen Welt existiert die Erbschaft. Die ersten paar Führer verwendeten ein Auto als Beispiel einer Klasse. Nun, was ist, wenn Sie spezifischere Arten von Autos wünschen, die alle diese Grundprinzipien eines Autos teilen? Erbschaft kann helfen.

Sie können mit einer grundlegenden „Auto“ -Klasse beginnen, die alle Eigenschaften enthält, die jedes Auto teilt. Diese wären alle sehr allgemein.

Nachdem Sie Ihr „Auto“ haben, können Sie neue Kurse erstellen und sie „Auto."Sie werden alle die gleichen Eigenschaften haben wie die Basis" Car "-Klasse. Anschließend können Sie zusätzliche Eigenschaften hinzufügen, die Sie zu diesen spezialisierteren Klassen möchten. Zum Beispiel können Sie "LKW", "Muscle Car" und "SUV" -Klassen haben, die alle von "Car" erben.”

Wenn Sie in realer Welt darüber nachdenken, haben Lastwagen, Muscle -Cars und SUVs alle die gleichen grundlegenden Eigenschaften wie jedes andere Auto, aber sie haben auch spezielle Eigenschaften.

Sie können sich auch weiter spezialisieren. Es gibt Unmengen verschiedener LKW -Arten. Sie können also spezialisiertere Klassen erstellen, die von „Truck“ erben."Das wird alle mit allem beginnen," Auto "und alles von" Truck "zu bilden.”

Verwendung der Vererbung in Python

Okay, jetzt können Sie dies mit einem echten Code ausprobieren. Richten Sie eine grundlegende "Auto" -Klasse ein, die aus dem Objekt erbt.Arbeiten Sie mit dem Beispiel unten mit dem Beispiel 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 Move_forward (Selbst, Geschwindigkeit): Druck ("Ihr %s bewegt sich bei %s" %(Selbst.__model, Geschwindigkeit)) def move_backward (Selbst, Geschwindigkeit): Druck ("Rückwärtsbewegung bei % s" % Geschwindigkeit) Klasse Musclecar (Auto): __HP = 300 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!"MyNewcar = Musclecar ('Ford', 'Mustang', '2016', 3000, 'Red') MyNewcar.SET_HP (687) Gegner = Musclecar ('Ford', 'Mustang', '2014', 6400, 'Green') Gegner.set_hp (465) mynewcar.MOVE_FORWARD ('25mph') Print (myNewcar.Drag_race (Gegner))) 

Beachten Sie, dass die Musclecar Objekte konnten den Konstruktor und den verwenden Move_forward Methode aus der „Car“ -Klasse, obwohl die Klasse, aus der sie instanziiert wurden.

Überschreiben

Nur weil eine Klasse von einem anderen erbt, stecken Sie nicht mit der gesamten Funktionalität der übergeordneten Klasse fest. Sie können Teile der Elternklasse innerhalb von Kinderklassen überschreiben. Die Änderungen, die an der Kinderklasse angewendet werden.

Im obigen Beispiel hatte das „Musclecar“ gerade eine Variable, __HP Nur dorthin schweben, ohne die Instanziierung auf die Instanziierung zu setzen. Schauen Sie sich das gleiche Beispiel an, aber mit dem Konstruktor überschrieben.

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 Move_forward (Selbst, Geschwindigkeit): Druck ("Ihr %s bewegt sich bei %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 = 'blau', hp = 325): Selbst.__make = selbst machen.__model = Modell Selbst.__year = Jahr selbst.__mileage = Kilometer Selbst.__color = Farb 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!"MyNewcar = Musclecar ('Ford', 'Mustang', '2016', 3000, 'Red', 687) Gegner = Musclecar () myNewcar.MOVE_FORWARD ('25mph') Print (myNewcar.Drag_race (Gegner))) 

Es gibt zwei Dinge zu bemerken. Erste, __HP wurde selbst.__HP und ist in den Konstruktor eingebaut. Aus diesem Grund ist es viel einfacher, es zu setzen. Zweitens wurden die Standardwerte für ein neues „Musclecar“ geändert. Ein Pinto ist kein sehr guter Standard -Muscle -Car, oder?

Sie können dies mit jeder Variablen oder Methode in einer Unterklasse oder einer untergeordneten Klasse tun. Es fügt einen zusätzlichen Grad an Flexibilität hinzu und verhindert, dass Sie in die Funktionalität des übergeordneten oder der Superklasse eingeschlossen werden.

Die Supermethode

Manchmal müssen Sie auf die in der Elternklasse gefundenen Methoden innerhalb der Kinderklasse zugreifen. Nehmen Sie das vorherige Beispiel, das diesen Konstruktor überschreibt. Ein Großteil dieses Code ist überflüssig. Verwendung super() Um den Konstruktor aus der „Car“ -Klasse anzurufen, beseitigt diese Redundanz und sorgt für eine optimiertere Klasse.

super() kann auch nur verwendet werden, um auf regelmäßige Methoden für die Verwendung in Unterklassenmethoden zuzugreifen. Das nachstehende Beispiel verwendet super() beide Wege.

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) mynewcar = musclecar ('ford', 'mustang', '2016', 3000, 'rot', 687) Gegner = MuscleCar () myNewcar.MOVE_FORWARD ('25mph') Print (myNewcar.Drag_Race (Gegner)) mynewcar.Trade_Up ('2017', 'Black') Print ("Mein neues %S Muscle Car ist %s und hat %d Miles" %(myNewcar.get_year (), mynewcar.get_color (), mynewcar.get_mileage ()))) 

Schauen Sie sich die Art und Weise an, wie die Trade_up Methode verwendet von super() Zugriff auf diese Settermethoden von der übergeordneten Klasse zugreifen und aufrufen.

Gedanken schließen

Mit der Vererbung können Sie Klassen als Vorlagen für speziellere Klassen verwenden. Sie können Kurse in einer solchen Struktur erstellen, dass der Beginn eines Stammbaum.

Ein Groß. Vererbung dient eine große Rolle bei der Ermöglichung.

Übungen

  1. Erstellen Sie eine Basisklasse, die aus der "Auto" -Klasse erbt.
  2. Instantieren Sie Ihre neue Klasse und rufen Sie eine der Methoden aus „Auto an.”
  3. Erstellen Sie eine neue Methode in Ihrer Kinderklasse.
  4. Rufen Sie Ihre neue Methode an.
  5. Verwenden super() Fügen Sie dem Konstruktor Ihrer Kinderklasse Variablen hinzu.
  6. Erstellen Sie eine Methode mithilfe super() Zugriff auf die Methoden der Elternklasse.
  7. Rufen Sie Ihre neue Methode an, die verwendet super().
Thecus NTOP 10TOP 10 Eingibt eine Redboot Boot Loader -Befehlsschnittstelle
Wenn Sie einen TheCus 2100 Nas -Speicher besitzen und sich von einem Softwareunfall wiederherstellen müssen, haben Sie zwei Optionen. Einer besteht da...
Konvertieren Sie das Matroska -MKV -Video in PS3 M2TS -Containerdateiformat
Das Konvertieren von Matroska -Dateiformat in M2Ts zur Verwendung auf PS3 hat eine Anzahl von Vorteilen. PS3 kann MT2s direkt aus der USB- oder M2TS -...
IPWatchd Ein IP -Tool zur Erkennung von Konflikten für Linux
Projektname Ipwatchd - IP -Konflikterkennungs -Tool Autor Jaroslav IMRICH -Projekt -Homepage IPWatchd Einführung Bei Verwendung eines GNU/Linux -Betri...