Python-Vererbung
ast Python module |
code Python module |
COM PHP module |
dis Python module |
Ev PHP module |
http Python module |
imp Python module |
io Python module |
keyword Python module |
nis Python module |
os Python module |
PS PHP module |
Python functions |
re Python module |
SPL PHP module |
StackOverflow |
struct Python module |
Sync PHP module |
time Python module
Michael Zippo
31.10.2021
Python-Vererbung ist, wenn eine Unterklasse den Code einer anderen Klasse verwendet. Vererbung ist eine wesentliche Funktion in objektorientierten Sprachen wie Python, die das Programmieren einfacher und effizienter macht.
Python ist eine objektorientierte Sprache, was bedeutet, dass sie das Erstellen wiederverwendbarer Codeblöcke unterstutzt, um den Code effizienter zu machen. Dies geschieht unter anderem durch Vererbung, bei der eine Unterklasse Code aus einer anderen Klasse verwenden kann.
Sie haben beispielsweise eine Klasse, die "Bankkonten‚" speichert, und m√∂chten eine Unterklasse, in der "Gold-Bankkonten‚" die auf Attribute in den "Bankkonten‚" vorhandene Klasse.
In diesem Tutorial werden wir die Grundlagen der Vererbung in Python aufschlusseln. Wir werden auch besprechen, wie Python-Klassen uber- und untergeordnet funktionieren und wie Attribute und Methoden uberschrieben werden, wenn Sie mit Klassenobjekten arbeiten.
Python-Vererbung
Vererbung ist ein Begriff das wird verwendet, um eine Python-Klasse innerhalb einer anderen Klasse zu beschreiben. Klassen, die als Unterklassen
oder Kindklassen
bezeichnet werden, können Werte von Elternklassen
erben, √§hnlich wie Kinder Eigenschaften von ihren Eltern in der realen Welt erben.
Vererbung ist nutzlich, da wir damit Unterklassen
erstellen können, die dieselben Werttypen wie eine Elternklasse haben, ohne diese Typen mehrmals deklarieren zu mussen.
Parent Klassen
√úbergeordnete Klassen (auch als Basisklassen
bezeichnet) erstellen die Masterstruktur, auf die Unterklassen zugreifen können. Wir können mehrere Unterklassen erstellen, ohne denselben Satz gemeinsamer Werte wie abgeleitet erneut deklarieren zu mussen class-Methoden aus der ubergeordneten Klasse.
Lassen Sie uns ein Beispiel verwenden, um zu veranschaulichen, wie dies in Aktion funktionieren wurde. Nehmen wir an, wir h√§tten ein Programm, das mit zwei verschiedenen Bankkontotypen funktioniert: Eltern und Kind.
81 % der Teilnehmer gaben an, dass sie sich nach dem Besuch eines Bootcamps hinsichtlich ihrer Berufsaussichten im Tech-Bereich sicherer fuhlten amp heute.
Der durchschnittliche Bootcamp-Absolvent verbrachte weniger als sechs Monate im Karriereubergang, vom Beginn eines Bootcamps bis zur Suche nach seinem ersten Job.
Beide Konten sind Bankkonten und so sie haben ähnliche Werte. Aber jedes dieser Konten kann seine eigenen eindeutigen Informationen erfordern. Beispielsweise kann das Konto eines Elternteils eine Überziehung unterstutzen, während das Konto eines Kindes möglicherweise nur mit seinem Kontostand funktioniert.
Wenn wir also ein Programm mit diesen Werten erstellen möchten, wurden wir zuerst definieren eine Klasse fur unser Bankkonto (eine Elternklasse) erstellen und dann untergeordnete Klassen fur die beiden Arten von Bankkonten erstellen–parent und child–die wir unterstutzen möchten.
Hier ist ein Beispiel fur die Deklaration einer Elternklasse fur ein Bankkonto:
Wir haben die Klasse BankAccount
erstellt, die drei Werte speichert: Vorname, Nachname und Saldo. Wir können unserer Klasse auch Methoden hinzufugen, etwa so:
Unsere Klasse speichert jetzt drei Werte sowie zwei neue Methoden: Details und Balance. Die Methode details
kann verwendet werden, um den Vor- und Nachnamen unseres Kontoinhabers herauszufinden, und die Methode saldo
gibt den Kontostand des Kontoinhabers zuruck.
Jede Methode und Variable, die wir in unserer BankAccount
-Klasse deklarieren, wird in unserer untergeordneten Klasse zug√§nglich sein.
Zur Veranschaulichung unsere Klasse in Aktion, lassen Sie uns ein Beispiel-Bankkonto erstellen. Wir können dies mit dem folgenden Code tun:
Dadurch wird ein Konto fur John Appleseed
erstellt, das 100 $ enthält. Jetzt Wenn wir unser Konto bereit haben, können wir damit beginnen, es wie mit jeder anderen Klasse zu referenzieren. Hier ist ein Beispiel dafur, wie wir die getBalance()
-Methode in unserem Bankkonto ausfuhren, um herauszufinden, wie viel Geld, das wir haben:
Unser Programm gibt Folgendes zuruck:
Untergeordnete Klassen
Im obigen Beispiel haben wir eine ubergeordnete Klasse deklariert, die Bankkonten speichert. Aber was ist, wenn wir Informationen zu einem bestimmten Kontotyp speichern möchten, z. B. ein Konto fur Kinder unter 18 Jahren? Hier kommen untergeordnete Klassen ins Spiel.
Untergeordnete Klassen oder Unterklassen erben Werte von der ubergeordneten Klasse. Dies bedeutet, dass jede untergeordnete Klasse auf die Methoden und Variablen verweisen kann, die wir in unserer ubergeordneten Klasse deklarieren.
Angenommen, wir möchten eine untergeordnete Klasse fur ein ChildBankAccount erstellen
. Dieses Konto sollte in der Lage sein, die Bankkontoinformationen eines Nutzers zuruckzugeben, seinen Namen und sein Guthaben, und außerdem einen neuen Wert namens restricted
haben. Dieser Wert wird auf dem Konto eines Kindes gespeichert, da es unter 18 Jahre alt ist und kein vollst√§ndiges Bankkonto haben kann.
Um eine untergeordnete Klasse zu erstellen, können wir den folgenden Code verwenden:
Der ChildBankAccount< Die /code>-Klasse wird zu einer untergeordneten Klasse der BankAccount
-Klasse, da BankAccount
in Klammern eingeschlossen ist. Wenn wir möchten, dass unsere untergeordnete Klasse genau die gleichen Werte wie unsere ubergeordnete Klasse hat–BankAccount
— können wir das Schlusselwort pass
wie folgt verwenden:
Aber wie bereits erw√§hnt, braucht unser Kinderkonto um einen speziellen Wert zu speichern: eine Variable, die besagt, dass das Konto des Benutzers eingeschr√§nkt ist.
Um dieses Ziel zu erreichen, werden wir unserem einen neuen Wert namens restricted
hinzufugen Kind Klasse. Wir können dies mit dem folgenden Code tun:
Lassen Sie uns nun unseren Code aufschlusseln.
Im obigen Code geben wir an, dass unsere ChildBankAccounts vier Werte enthalten sollen: Vorname, Nachname, ausgeglichen und eingeschr√§nkt.
life!"
Venus, Software Engineer bei Rockbot
Die ersten drei–Vorname, Nachname und Balance–sind dieselben wie bei uns Werte der ubergeordneten Klasse, aber eingeschränkt
ist neu und exklusiv fur unsere Kinderklasse. Standardmäßig ist restricted
auf True
gesetzt.
Wenn wir also ein Standard-BankKonto
erstellen (kein ChildBankAccount
), können wir nicht auf den eingeschränkten
Wert zugreifen. Ebenso können wir nicht auf die Methode isRestricted
zugreifen, es sei denn, wir erstellen ein ChildBankAccount
.
Hier sehen Sie ein Beispiel fur die Erstellung einer ChildBankAccount
und verwenden Sie die Methoden getBalance()
und isResticted()
, um mehr uber unsere Klasse zu erfahren:
Unser Code gibt Folgendes zuruck:
Wie Sie sehen, definiert unser Programm zuerst einen neuen ChildBankAccount
fur Bill Appleseed
, dessen Konto h√§lt 100 Dollar. Dann fuhrt unser Programm die Methode getBalance()
in unserer Klasse aus, die den Kontostand des Benutzers zuruckgibt. getBalance()
wird in unserer ubergeordneten Klasse BankAccount
deklariert, ist aber fur ChildBankAccount
durch Vererbung zug√§nglich.
Unser Programm fuhrt auch die Methode isRestricted()
aus, die besagt, dass das Konto des Kindes eingeschr√§nkt ist, da es junger als 18 Jahre ist. Diese Klasse ist in ChildBankAccount . deklariert
, was bedeutet, dass es fur unsere Elternklasse BankAccount
nicht zug√§nglich ist. Wenn wir ein eingeschr√§nktes BankAccount
erstellen wollten, mussten wir die ubergeordnete Klasse √§ndern.
√úbergeordnete Methoden neu definieren
In unserem obigen Beispiel haben wir a . deklariert Elternklasse namens BankAccount
, die Informationen fur Bankkonten speichert. Wir haben auch eine untergeordnete Klasse namens ChildBankAccount
erstellt, die Informationen fur Kontoinhaber unter 18 Jahren speichert. Diese Klasse hat die Methoden der Klasse BankAccount
geerbt und auch die . erstellt isRestricted()
-Methode.
Aber was ist, wenn wir eine vorhandene Methode der ubergeordneten Klasse ändern möchten? Angenommen, wir möchten, dass unser Bankkonto
-Kontostand eine Nachricht mit seinem Kontostand und einer Nachricht mit dem Hinweis Sie haben Anspruch auf eine √úberziehung
zuruckgibt, aber wir möchten nicht, dass dies fur ChildBankAccount
-Inhaber.
Dazu mussen wir unsere ubergeordnete Methode uberschreiben.
Hier ist der Code fur unsere uberarbeitete ubergeordnete Methode BankAccount
, die jetzt eine Nachricht an die Kontoinhaber ausgibt, um zu sagen, dass sie bei der √úberprufung ihres Kontostands fur eine √úberziehung berechtigt sind:
Wenn wir nun ein neues BankKonto
fur John Appleseed
erstellen und seinen Kontostand ausdrucken, sehen wir eine Nachricht mit der Meldung Sie haben Anspruch auf eine √úberziehung
. Hier ist ein Beispiel, wie wir ein neues Konto anmelden und seinen Kontostand uberprufen:
Unser Code gibt Folgendes zuruck:
Aber diese Änderung bedeutet auch, dass unser ChildBankAccount
, der erbt seine Werte von BankAccount
, wird die Nachricht ebenfalls angezeigt. Hier ist ein Beispiel, wie wir ein ChildBankAccount
erstellen und seinen Kontostand uberprufen, nachdem sich unsere ubergeordnete Klasse BankAccount
ge√§ndert hat:
Unser Code gibt zuruck:
Da Kinder generell keine √úberziehungskredite haben, mussen wir unseren Code √§ndern. Dazu mussen wir nun unsere Klasse ChildBankAccount
modifizieren und eine neue Funktion getBalance()
deklarieren.
Das Überschreiben von Parent-Methoden kann nutzlich sein, wenn Sie mehrere Child-Methoden haben, die möglicherweise ähnliche Methoden wie ihre Eltern verwenden, aber ihre eigenen spezifischen Änderungen erfordern. Wie im obigen Fall möchten wir, dass unsere ubergeordneten Bankkonten eine Überziehungsnachricht sehen, aber nicht unsere untergeordneten Bankkonten. Daher uberschreiben wir unsere ubergeordnete Methode in ChildBankAccount
.
Vererbung wird in der objektorientierten Programmierung verwendet, um Sie beim Erstellen von Unterklassen zu unterstutzen, die Werte speichern können, die bereits in einer ubergeordneten Klasse deklariert wurden. Dies ist nutzlich, wenn Sie ähnliche Klassen erstellen, die ähnliche Werte speichern, da Sie Vererbung verwenden können, um diese Klassen zu erstellen, ohne Ihren Code mehrmals zu wiederholen.
In diesem Tutorial haben wir die Rolle der Vererbung in Python untersucht . Wir haben auch besprochen, wie Vererbung und Eltern- und Kindklassen funktionieren, und dann untersuchten wir, wie Elternmethoden uberschrieben werden können. Jetzt sind Sie bereit, wie ein Python-Experte mit Klassen und Vererbung zu arbeiten!