Wir haben also über Kapselung gesprochen, über Abstraktion, was ist mit der dritten Säule
der Hoffnung, sie heißt Vererbung und Vererbung ermöglicht es neuen Objekten, die Eigenschaften vorhandener Objekte zu übernehmen, sodass
Sie Klassen erben können.
Schauen wir uns ein Beispiel an.
Entfernen wir den vorherigen Code, den wir hatten, und kehren wir zu unserem Spielbeispiel zurück.
Wir wollen ein neues Spiel entwickeln und haben verschiedene Arten von Benutzern, also haben wir Benutzer, die Zauberer sein können, die
Elfen sein können, die, ich weiß nicht, Bogenschützen sein können.
Aber alle diese Benutzer haben einige gemeinsame Funktionen.
Und jeder der Unterbenutzer, wie Zauberer, Elfen, Bogenschützen, hat einige gemeinsame Funktionen, aber vielleicht
auch andere Angriffe.
Mit OLP können wir also tatsächlich Vererbung durchführen.
Nehmen wir zum Beispiel an, wir haben hier einen Klassenbenutzer und dieser Benutzer hat, sagen wir, eine Signierfunktion.
Oder die Sinon-Methode, noch einmal, sie wird sich selbst empfangen und dann nehmen wir für den Moment an, dass wir hier
eine Art Zeichen haben.
Sagen wir für den Moment einfach, drucken Sie eingeloggt, denn um ein Spiel zu spielen, müssen sie eingeloggt sein.
OK, jetzt fragen Sie sich vielleicht, oh, wo ist hier die Init-Methode?
Sollten wir nicht diese init-Methode haben, die zuerst ausgeführt wird?
Nun, wir könnten, aber wenn wir keine Variablen oder Attribute haben, die wir dem Benutzer zuweisen möchten, dann bräuchten wir in diesem
Fall eine Methode und eine Methode.
Für den Moment sagen wir einfach, dass wir nichts brauchen, was der Benutzer außer dieser Anmeldemethode
hat.
Nehmen wir nun an, wir möchten eine Reihe von Unterklassen erstellen, damit wir einen Klassenassistenten haben.
Und vorerst machen wir hier nur einen Pass, damit wir keine leere Klasse haben, aber wir können sie trotzdem
bauen.
Und dann sagen wir, wir haben auch eine Klasse.
Archer, das wird auch passieren.
Ich werde dafür sorgen, dass wir hier Klammern haben.
Nun, hier ist die Sache.
Im Idealfall sind all diese Zauberer und Bogenschützen auch Benutzer, oder?
Wir haben also Benutzer.
Und diese Benutzer können mehrere Formen haben, sie können Zauberer sein, sie können Bogenschützen sein.
Sie können Oger sein, alle Charaktere in unserem Spiel.
Aber alle müssen, sagen wir, zuerst angemeldet werden. Wie können wir sicherstellen, dass alle diese Benutzer oder Klassen
auch Zugriff haben, um sich anzumelden?
Nun, wir können Vererbung verwenden und wie machen wir Vererbung ganz einfach. Eigentlich müssen wir nur in
der Klammer die Elternklasse übergeben, von der wir erben möchten.
Sagen wir also, ich mache hier Yuzu.
Klicken wir nun auf Ausführen.
Keine Fehler.
Alles sieht gut aus.
Und übrigens, die grüne Linie hier sagt mir, dass die Einrückung kein Vielfaches von vier ist, da die
Einrückung in Python vier sein sollte.
Also können wir das einfach tun.
Aber ich mag es, es kleiner zu halten, nur damit es leichter zu lesen ist.
OK, also lassen Sie uns hier eine Klasse instanziieren, ich werde einen Assistenten erstellen und dann sagen.
Wizard und führen Sie diese Wizard-Klasse aus.
Wenn ich jetzt hier drucke und ich es tue, sagen wir Druckassistent.
Wenn ich klicke, laufe.
Ich sehe, dass das Assistentenobjekt erstellt wurde, und was ist, wenn ich mich nicht anmelde?
Ich sehe das ja, es ist tatsächlich da, wenn ich mich anmelde und auf Ausführen klicke.
Hallo, ich bin eingeloggt.
Wie cool ist, dass ich diese Funktionalität von der Benutzerklasse geerbt habe.
Und das ist wirklich sehr mächtig, weil ich jetzt meinen Zauberer erweitern kann, also
sagen wir, dieser Zauberer hat ein Angeborenes.
Methode.
Welche wird ausgeführt, wenn der Assistent erstellt wird und hat eine.
Name.
Und Macht, die wir bekommen.
Und hier ordnen wir dem gleichen Namen den eigenen Namen und dann der gleichen Macht die autodidaktische Macht zu.
Und fügen wir noch eine weitere Methode hinzu.
Nennt es Angriff.
Und diese Angriffsmethode gibt einfach einen F-String aus.
Das wird sagen.
Angriff mit.
Kraft von.
Sagen wir Autodidakt.
Und dann werden wir dasselbe für den Bogenschützen tun, also werde ich diesen Code kopieren.
Hier eingefügt und der Bogenschütze hat einen Namen.
Und sagen wir statt Macht sagen wir, dass es, sagen wir, hat.
Anzahl der Eggen.
Und Anzahl der Pfeile.
Wird das neue Attribut sein, das es bekommt, und dann wird der Angriff, nun ja, mit Pfeilen angreifen.
Und dann haben wir noch Pfeile.
Ein Pfeil links zeigt nur die Anzahl der Fehler an und wir können etwas Lustiges tun, bei dem die Pfeile bei jedem
Angriff abnehmen.
OK, jetzt, da wir das hier haben, machen wir es etwas kleiner, damit Sie es sehen können.
Da gehst du.
Nun, da wir dies haben, instanziieren wir den ersten Schwyzer.
Mit.
Sagen wir Maalin mit der Potenz von 50.
Und dann der Bogenschütze.
Wir werden instanziiert.
Als Robin mit, sagen wir, fünfhundert Helden oder weniger bis hundert Stunden.
Jetzt müssen es der Zauberer und der Bogenschütze haben.
Nun, sie werden die Anmeldung haben.
Aber sie werden auch den Angriff haben, aber einzigartig für ihr Individuum.
Klassen.
Und sie werden auch unterschiedliche Eigenschaften haben.
Schauen wir mal, ob ich Wizard Dot machen soll.
Herr. Magier.
Ein Punkt.
Und ich werde sagen.
Attacke.
Und lass mich einfach umkehren.
Meine Codeintelligenz.
Wir werden sehen, dass wir ein paar Fehler haben.
Hier, was heißt das, was es sagt, undefinierter Name selbst, und das liegt daran, dass ich mich selbst und die Klammern vergessen habe.
Denken Sie also daran, dass wir immer den ersten Parameter self angeben müssen.
Wenn wir nach unten scrollen und zu Wizard Dot gehen, sehen wir, dass wir Namen, Macht und Angriff haben.
Wenn ich hier auf Angriff klicke und ich renne.
Wir sehen, dass ich mit einer Stärke von 50 angreife, wenn ich Bogenschütze mit einem Punkt angreife.
In diesem Fall werde ich mit Pfeilen angreifen, Pfeile bleiben hundert.
Aber beide haben gleichzeitig die Anmeldefunktion.
Wie cool ist, dass dies die Macht der Vererbung ist.
Wir halten unseren Code trocken, richtig, wir abstrahieren den Teil des Codes, den beide gemeinsam haben, aber
dann ändern wir die Dinge entsprechend den Bedürfnissen jedes einzelnen.
So könnte ich zum Beispiel andere Methoden und Eigenschaften auf Wizzard haben als der Archer, aber
auch die Benutzerfunktionalität eines gemeinsamen Benutzers, die sie haben, und auf diese Weise ihren Code organisiert und sauber halten.
Bringen wir nun den Zoom zurück, damit Sie ihn deutlich sehen können.
Nun, diese Idee der Vererbung ist wirklich sehr mächtig.
Und der Schlüssel hier ist, dass wir eine Paarungsklasse und Kinderklassen haben.
Nun werden diese untergeordneten Klassen manchmal als Unterklassen oder abgeleitete Klassen bezeichnet, weil sie Unterklassen von Benutzern
sind oder von der Benutzerklasse abgeleitet sind.
Lassen Sie uns dieses Thema im nächsten Video etwas näher untersuchen.