Welkom terug.
In de vorige video heb ik je laten zien hoe je een methode aanroept uit een subklasse van de bovenliggende klasse.
Dus in ons geval deden we een gebruikersaanval.
Om de aanvalsmethode en gebruiker uit te voeren, heb ik nu de aanvalsmethode verwijderd omdat ik iets anders
wil proberen.
Ik wil hier een init-functie maken en deze init-functie kost zichzelf.
En laten we zeggen dat de gebruiker, laten we zeggen, e-mail zal ontvangen.
Omdat alle gebruikers van ons spel e-mails moeten hebben.
En hier zeggen we gewoon self-dot-e-mail.
We bellen de e-mail.
Lekker simpel.
Nu hier binnen.
Als ik deze code zou uitvoeren en laten we gebruikersgegevens tac voor nu verwijderen, dus we hebben dezelfde wizard die we
zojuist hebben toegevoegd of sorry, deze init.
En we hebben onze wizard één, dus als ik Wizard hier uitvoer en laten we zeggen dat we Wizard één punt e-mail willen uitvoeren.
Als ik klik, ren dan weg.
Hmm, ik krijg Wizard Object heeft geen attributen e-mail.
Hmm, maar ik dacht dat de gebruiker gebeld zou worden wanneer we de wizard maken, juist, wanneer we Wizard één
instantiëren.
Het punt is, hoewel we misschien erven, laten we zeggen, bijvoorbeeld, als ik dat doe,
we de.
Aanmelden.
Van de gebruiker, en als ik op uitvoeren klik, zien we dat we erven dat de wizard al een Init-functie heeft,
al een constructor, toch?
Dus hoe kunnen we dit oplossen?
Nou, een manier is om gewoon e-mail hier toe te voegen, goed, en gewoon de e-mail te hebben.
Kenmerk precies hier beneden, maar wat is hier het probleem mee?
Nou, het is inefficiënt, toch?
Want als ik een Archer-klasse maak, moet ik hetzelfde doen.
En we weten dat al deze attributen hetzelfde zullen zijn in al onze subklassen.
We willen het hier doen.
Dus wat is een efficiëntere manier om dit te doen?
Welnu, we willen de init-methode van de gebruiker van binnenuit hier aanroepen, juist, want elke
keer dat we een nieuwe Wizzard instantiëren, wordt deze init-functie aangeroepen.
Dus de manier om dat te doen is door de gebruikerspunt te zeggen.
Onderstreep, onderstreep erin.
En geef het dan aan zichzelf.
En dan mailen.
En dan is de e-mail iets dat we doorgeven.
Zodat als ik hierheen zou gaan, ik het kan zeggen.
Merlin bij Gmail dot com wordt de e-mail.
Dus als ik dat nu doe, laten we zeggen.
DOT-e-mail voor Wizzard één en ik klik op Uitvoeren.
Ik krijg weer de e-mail van Merlyn, we hebben alleen de Init-methode genoemd.
Van de gebruiker in de wizard.
Dus toen we een nieuwe wizard startten, hebben we deze functie uitgevoerd en binnen deze functie hebben we die gebruiker
erin uitgevoerd en de e-mail die we hebben doorgegeven als argument doorgegeven.
En hier.
Dit is een manier om het te doen, en dan is er nog een andere manier, en het heet super en het is een
sleutelwoord.
Zoals je kunt zien, wordt het hier gemarkeerd en alles wat we doen is super uitvoeren.
En Super verwijst naar de superklasse of de klasse boven Wizzard, die gebruiker is, en dit is eigenlijk een
nieuwe toevoeging vanaf Python, twee punten.
Met super hebben we het zelf eigenlijk niet meer nodig, dus onze code ziet er nog schoner uit en alles wat we doorgeven is dit en
als we klikken, rennen.
We krijgen nog steeds het goede antwoord super.
Hiermee kunnen we op deze manier naar de gebruiker verwijzen en hoeven we ons geen zorgen te maken over het passeren van onszelf.