Python-Vererbung

| | | | | | | | | | | | | | | | | |

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.

Hier ist der Code fur unser ChildBankAccount von oben:

Wir mussen diesen Code ändern, um eine neue Funktion hinzuzufugen: getBalance(). Diese Funktion funktioniert genauso wie die, die wir in unserer Elternklasse deklariert haben, enthält jedoch keine Meldung uber Überziehungen. Hier ist der Code, den wir hinzufugen wurden, um unsere neue Funktion zu deklarieren:

Versuchen wir jetzt, das Guthaben unseres Kindes abzurufen:

Unser Code gibt Folgendes zuruck:

In Im obigen Beispiel haben wir die Methode getBalance() in der untergeordneten Klasse ChildBankAccount uberschrieben. Unsere neue Methode getBalance() fur ChildBankAccount zeigt nur den Kontostand des Benutzers an. In unserer Klasse BankAccount zeigt die Methode getBalance() jedoch sowohl den Kontostand des Benutzers als auch die Meldung Sie haben Anspruch auf eine √úberziehung.

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.

Schlussfolgerung

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!