Gevorderde Python-ontwikkelingscursus
Hoofdstuk
>
Niveau
Geavanceerde klassen
Super Functie
Doelstelling
Verzamel verschillende soorten vlees, kook en serveer ze op diverse manieren door objecten te maken met super functies.
De koelkast bevat verschillende soorten vlees die je kunt koken en serveren met de uien die je in het vorige level met olie hebt klaargemaakt. Het vlees kan op verschillende manieren en tot verschillende temperaturen/gaarheden worden bereid; dit kun je bereiken door objecten te maken van klassen, net als in eerdere levels, maar dat kan worden uitgebreid met behulp van Super Functions.
De super() functie wordt op een vergelijkbare manier gebruikt als method overriding; het verschil is dat je met deze functie de functie van de ouder klasse kunt uitvoeren naast je eigen code in de kind klasse in plaats van de functie volledig te overschrijven.
# Parent Class
class cooked_meat:
type = ""
def cook_meat(self):
player.speak("Cooking the %s meat with oil
and onions." % self.type)
player.place("meat")
player.collect("cooked %s" % self.type)
# Child Class
class ready_meat(cooked_meat):
rarity = ""
def cook_meat(self):
super().cook_meat()
player.speak("The meat is cooked %s" % self.rarity)
Binnen de kind klassefunctie cook_meat() wordt de super() functie gebruikt. Aangezien cook_meat() ook een functie is die in de parent klasse wordt gebruikt, zou de aangepaste functie normaal gesproken de overgeërfde code overschrijven als gevolg van method overriding, maar door de super() functie te gebruiken kun je de code in de ouder klasse uitvoeren naast de nieuwe code die je in de kind klasse schrijft.
Loop eerst naar de koelkast en verzamel de vier (4) stukken vlees die je gaat gebruiken om te koken. Elk van de vier (4) vleessoorten is van een ander type, namelijk: "pork" , "beef" , "lamb" en "buffalo".
Zodra je ze hebt verzameld, loop je naar het lichte X-teken en maak je voor elk type vlees een object aan om het te bereiden. Voor elk vleesobject stel je het type vlees en de gaarheid in die je wilt bereiken, bijvoorbeeld:
pork_meat = ready_meat() pork_meat.type = "pork" pork_meat.rarity = "medium" pork_meat.cook_meat()
De gaarheid is de kooktemperatuur waarop je het vlees bereid wilt hebben. Laat het vlees koken op de volgende gaarheden: "pork" bereid op "medium", "beef" bereid op "well done", "buffalo" bereid op "medium rare", en "lamb" bereid op "rare". Gebruik bij het X-teken de kindklassefunctie cook_meat() nadat je het type en de gaarheid van het vlees hebt ingesteld, zoals in het bovenstaande voorbeeld.
Zodra het vlees is bereid, loop je naar het donkere X-teken op het gele tapijt en gebruik je de collect() functie om zowel "salt" als "pepper" uit de voorraadkast te pakken. Maak een lijst met de naam ingredients en plaats de twee opgepakte ingrediënten erin, zoals: ingredients = ["salt","pepper"].
Met de extra ingrediënten kun je nu het vlees serveren met borden op de tafel. Maak voor elk van de bereide vleessoorten een lijst met de volgende namen: served_pork, served_beef, served_lamb en served_buffalo. Voeg aan deze lijsten het bereide vlees toe, samen met de ingrediëntenlijst door een geneste lijst te maken, bijvoorbeeld:
served_pork = [] served_pork.append("cooked pork") served_pork.append(ingredients)
Zodra de lijsten zijn ingesteld, loop je naar de gouden X-tekens en gebruik je de place() functie om het vlees op de borden aan de toonbanken te serveren. Bij het bovenste gouden X-teken, gericht naar de tafel, place() je: served_pork en served_buffalo. Bij het onderste gouden X-teken, gericht naar de tafel, place() je: served_lamb en served_beef. Bijvoorbeeld: player.place(served_pork). Zodra al het vlees is geserveerd, heb je het level voltooid.