Avanceret Python Udviklingskursus
Kapitel
>
Niveau
Avancerede klasser
Super Funktion
Mål
Saml forskellige typer kød, kog dem og server dem på forskellige måder ved at oprette objekter med super-funktioner.
Køleskabet har forskellige typer kød, som du kan tilberede og servere sammen med de løg, du forberedte med olie i det forrige niveau. Kødet kan tilberedes på forskellige måder og til forskellige temperaturer/gennemstegningsgrader, og du kan opnå dette ved at oprette objekter fra klasser, ligesom i de tidligere niveauer, men det kan forbedres ved hjælp af Super Functions.
Funktionen super() bruges på en lignende måde som metodeoverskrivning, forskellen er, at ved at bruge denne funktion kan du køre den parent’s klassefunktion ud over din egen kode i den child klasse i stedet for fuldstændigt at overskrive funktionen.
# 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)
Inden for den child klasse funktion cook_meat() bruges funktionen super(). Da cook_meat() også er en funktion, der anvendes i den parent klasse, ville den brugerdefinerede funktion normalt overskrive den arvede kode på grund af method overriding, men ved at bruge funktionen super() kan du køre koden i den parent klasse såvel som den nye kode, du skriver i den child klasse.
Gå først til køleskabet og hent de fire (4) stykker kød, du skal bruge til at tilberede. Hvert af de fire (4) kød er af en forskellig type, nemlig: "pork" , "beef" , "lamb" og "buffalo".
Når du har samlet dem, gå til det lyse X-mærke og opret objekter af hver af kødtyperne for at tilberede dem, og for hvert kødobjekt skal du angive den type kød og den gennemstegningsgrad, du ønsker at tilberede dem med, for eksempel:
pork_meat = ready_meat() pork_meat.type = "pork" pork_meat.rarity = "medium" pork_meat.cook_meat()
Gennemstegningsgrad er den tilberedningstemperatur, du ønsker, at kødet skal tilberedes ved. Få kødet tilberedt med følgende gennemstegningsgrader: "pork" tilberedt "medium", "beef" tilberedt "well done", "buffalo" tilberedt "medium rare", og "lamb" tilberedt "rare". Ved X-mærket skal du anvende den child klasse funktion cook_meat() efter at have angivet kødtypen og gennemstegningsgraden, som vist i eksemplet ovenfor.
Når kødet er tilberedt, gå til det mørke X-mærke på det gule tæppe, og brug funktionen collect() til at hente både "salt" og "pepper" fra spisekammeret. Opret en liste med navnet ingredients og placer de to hentede ingredienser i den, således: ingredients = ["salt","pepper"] .
Med de ekstra ingredienser kan du nu servere kødet med tallerkener på bordet. Opret en liste for hver af de tilberedte kødtyper med følgende navne: served_pork , served_beef , served_lamb og served_buffalo. Tilføj til disse lister det tilberedte kød samt ingredienslisten ved at oprette en nested list, for eksempel:
served_pork = [] served_pork.append("cooked pork") served_pork.append(ingredients)
Når listerne er sat op, gå til de gyldne X-mærker og brug funktionen place() til at servere kødet på tallerkenerne, der er på diske. Ved det øverste gyldne X-mærke, vend mod bordet, og place() følgende: served_pork og served_buffalo. Ved det nederste gyldne X-mærke, vend mod bordet, og place() følgende: served_lamb og served_beef. For eksempel: player.place(served_pork), og når alt kød er serveret, har du fuldført niveauet.