Willkommen zurück.
Im vorherigen Video habe ich Ihnen gezeigt, wie Sie eine Methode aus einer Unterklasse der übergeordneten Klasse aufrufen.
In unserem Fall haben wir also einen Benutzerangriff durchgeführt.
Um die Angriffsmethode und den Benutzer auszuführen, habe ich jetzt die Angriffsmethode entfernt, weil ich etwas anderes
ausprobieren möchte.
Ich möchte hier eine Init-Funktion erstellen und diese Init-Funktion nimmt sich selbst.
Und dann nehmen wir an, der Benutzer erhält beispielsweise eine E-Mail.
Denn alle Benutzer unseres Spiels benötigen E-Mails.
Und hier sagen wir einfach Self-Dot-E-Mail.
Wir rufen die E-Mail an.
Schön und einfach.
Jetzt hier drin.
Wenn ich diesen Code ausführen und vorerst die Benutzerdaten entfernen soll, haben wir denselben Assistenten, den wir gerade hinzugefügt
haben, oder entschuldigen Sie, diese Init.
Und wir haben unseren Wizard One, also wenn ich Wizard hier ausführe und sagen wir, wir wollen Wizard One-Dot-E-Mail ausführen.
Wenn ich klicke, laufe.
Hmm, ich bekomme Wizard-Objekt hat keine E-Mail-Attribute.
Hmm, aber ich dachte, der Benutzer wird aufgerufen, wenn wir den Assistenten erstellen, richtig, wenn wir einen Assistenten
instanziieren.
Nun, die Sache ist die, obwohl wir erben könnten, sagen wir zum Beispiel, wenn ich das tue, könnten
wir das erben.
Einloggen.
Vom Benutzer und wenn ich auf Ausführen klicke, sehen wir, dass wir erben, dass der Assistent bereits eine Init-Funktion hat,
bereits einen Konstruktor, oder?
Wie können wir das also lösen?
Nun, eine Möglichkeit besteht darin, einfach hier eine E-Mail hinzuzufügen und die E-Mail zu haben.
Attribut genau hier unten, aber was ist das Problem daran?
Nun, es ist ineffizient, oder?
Denn wenn ich eine Archer-Klasse erstelle, muss ich dasselbe tun.
Und wir wissen, dass all diese Attribute für alle unsere Unterklassen gleich sein werden.
Wir wollen es hier tun.
Was ist also ein effizienterer Weg, dies zu tun?
Nun, wir wollen hier die init-Methode des Benutzers von innen aufrufen, richtig, denn jedes
Mal, wenn wir einen neuen Wizzard instanziieren, wird diese init-Funktion aufgerufen.
Der Weg, dies zu tun, besteht darin, Benutzerpunkt zu sagen.
Unterstreiche, unterstreiche darin.
Und dann gib ihm das Selbst.
Und dann E-Mail.
Und dann ist die E-Mail etwas, das wir weitergeben.
Wenn ich also hier runter gehe, kann ich sagen.
Merlin von Gmail dot com wird die E-Mail sein.
Also, wenn ich es jetzt tue, sagen wir.
DOT-E-Mail für Wizzard One und ich klicke auf Ausführen.
Ich bekomme noch einmal Merlyns E-Mail, wir haben nur die Init-Methode aufgerufen.
Von dem Benutzer innerhalb des Assistenten.
Wenn wir also einen neuen Assistenten instanziiert haben, haben wir diese Funktion ausgeführt und innerhalb dieser
Funktion diesen Benutzer ausgeführt und die E-Mail als Argument übergeben.
Und hier.
Nun, das ist eine Möglichkeit, es zu tun, und dann gibt es eine andere, und sie heißt super und ist ein
Schlüsselwort.
Wie Sie sehen, wird es hier hervorgehoben und alles, was wir tun, ist super.
Und Super bezieht sich auf die Super-Klasse oder die Klasse über Wizzard, die Benutzer ist, und dies ist tatsächlich
eine Neuerung ab Python, zwei Punkte darauf.
Mit super brauchen wir das Selbst eigentlich nicht mehr, daher sieht unser Code noch sauberer aus und alles, was wir passieren, ist dies und wenn
wir klicken, wird ausgeführt.
Wir bekommen trotzdem super die richtige Antwort.
Ermöglicht es uns, auf diese Weise auf den Benutzer zu verweisen und müssen uns keine Sorgen machen, dass wir selbst passieren.