Laten we het hebben over meervoudige overerving, wat je nu in Python kunt doen, onthoud, we hebben
onze gebruikerswizard en Archer Classis.
We proberen dat spel nu te bouwen.
Laten we wat van deze code opschonen.
We hebben de init-functie niet meer nodig.
We hebben hier gewoon een gebruiker.
We hebben een wizard die van de gebruiker erft en ook Archer die van de gebruiker erft.
Maar wat gebeurt er als we een nieuw personage willen creëren?
En dit karakter wordt een klasse genoemd, laten we zeggen.
Laten we zeggen dat het hybride Bjorg heet, we zijn naam, ik weet het, maar hier is het ding.
Hybride Borg is een speciaal type personage omdat het de krachten heeft die tovenaars hebben, namelijk aanvallen.
Het heeft de kracht die boogschutters hebben, namelijk controlepijlen.
En gewoon voor de lol, laten we er ook nog wat loopneus aan toevoegen.
En we zullen maar zeggen dat Run heel snel liep.
Oké, dus we willen dat deze hybride bawk al deze methoden heeft, kunnen we dat doen?
Welnu, we kunnen alleen Wizard en dan Archer zeggen, we kunnen het zoveel parameters geven als we willen, als meerdere erfenissen
die we erven van Wizard en Archer, zodat hier, laten we zeggen dat ik het niet doe alles en
ik ga gewoon door.
Als ik, laten we zeggen, hybride Borg maak, wordt er een hybride.
Voor geïnstantieerde klassen kan ik nu al deze dingen gebruiken.
Laten we ze controleren, laten we zeggen print HP one dot run.
Kan ik dat doen?
En nogmaals, een kleine spelfout, laten we ervoor zorgen dat het hybride hybride borak is, geen hybride bord.
Ik hoop dat je deze video niet verveelt.
Oke.
Ik krijg een fout die ontbreekt in de vereiste positionele argumenten, naam en macht.
Goed, want hoewel we deze dingen goed moeten doorgeven, accepteert het deze parameters.
Oké, laten we zeggen dat we een naam willen hebben.
Borghi en de macht om 50 te zijn als ik dit run.
Oké, het lijkt erop dat rennen heel snel werkt.
Ik heb kunnen erven van Archer.
Hoe zit het met check arroz?
Als ik klik, ren dan weg.
Oh, ik krijg hybride bordobject heeft geen attribuut airs.
Nu, waarom is dat?
Want technisch gezien hebben wij.
Eerst geërfd van Wizard, dan accepteren Archer en Wizard.
Naam en macht.
Maar we hebben nooit de naam en arroz van de pijl gegeven.
Hmm, hoe kunnen we dat oplossen?
Laten we iets proberen, laten we zeggen dat we hier 100 pijlen hebben toegevoegd met dit werk.
Hmmm, dat werkt toch niet?
En dit is een lastige zaak met meervoudige overerving en waarom sommige programmeertalen eigenlijk niet eens toelaten dat
meerdere overervingen een beetje lastig worden, omdat je in je hoofd ervoor moet zorgen dat
je begrijpt hoe deze klassen worden geïmplementeerd en ervoor zorgt dat dat we niets
overschrijven.
In ons geval kunnen we onze code een beetje ingewikkelder maken.
Dus wat kunnen we hier doen?
Nou, hierbinnen kan ik misschien zoiets doen, ik kan zeggen definiëren.
In het.
Dit ontvangt zichzelf, het zal een naam krijgen, een kracht en ook.
Arroz.
En dan tot slot, en hier kan ik zeggen dat we ook de Boogschutter gaan noemen.
Puntje inet.
En dat gaat een selfie maken en dan de naam doorgeven.
En die van Darrel.
Zodat als ik dit uitvoer.
Laten we de pijlen toevoegen, honderd hier en ik klik op uitvoeren.
Ziezo, Arrows werkt nu.
Nu, gewoon om te controleren of onze aanval op de tovenaar ook werkt, als we aanvallen.
En klik, Ron.
O, jongen.
Nu heeft ons hybride object geen kracht.
Dus nogmaals, om macht te hebben, zullen we dit moeten kopiëren en laten we zeggen deze keer Wizzard
zelf en hem dan macht geven.
Als ik klik, ren dan weg.
Oké, aanval werkt, laten we teruggaan om te controleren of we niets hebben gebroken.
Als ik daarop klik, werkt dat ook.
En dan tot slot, hoe zit het met teken in stierteken en werk?
Ingelogd, oké.
Oh, jongen, dat was veel en er zijn een paar manieren om dit probleem daadwerkelijk op te lossen.
Wat ik je echter wilde laten zien, is dat wanneer je meervoudige overerving doet, dingen ingewikkeld kunnen worden.
En hoewel we het stap voor stap doorlopen, stel je voor dat er een coda was die
langskwam in je team op het werk en probeer deze code te begrijpen waar we hier nogal wat logica aan hebben toegevoegd en de dingen
steeds ingewikkelder worden en het is moeilijk om alles in je hoofd bij te houden.
En dit is waarom meervoudige overerving een van die dingen is waar het echt, echt krachtig is.
Maar met grote kracht komt grote verantwoordelijkheid, omdat we steeds meer complexiteit creëren.
Nogmaals, een deel van de reden dat sommige programmeertalen je eigenlijk niet toestaan om meervoudige overerving uit te voeren.
Trouwens, ik ga je nog meer in verwarring brengen.
En de volgende video gaan we praten over iets dat MRO heet.
En het wordt weer een goed voorbeeld van waarom je voorzichtig wilt zijn met meerdere erfenissen.
Ik zie je daar wel in.