Avansert Pythonutviklingskurs
Kapittel
>
Nivå
Avanserte Klasser
Superfunksjon
Mål
Samle ulike typer kjøtt, kok dem og server dem på forskjellige måter ved å lage objekter med superfunksjoner.
Kjøleskapet har ulike typer kjøtt som du kan koke og servere med løken du forberedte med olje i forrige nivå. Kjøttet kan kokes på forskjellige måter og til ulike temperaturer/grad av steking; du kan oppnå dette ved å lage objekter fra klasser, på samme måte som i tidligere nivåer, men det kan forbedres med bruk av Superfunksjoner.
Funksjonen super() brukes på en lignende måte som metodeoverstyring, men forskjellen er at ved å bruke denne funksjonen kan du kjøre forelderklassens funksjon i tillegg til din egen kode i barneklassen, i stedet for å fullstendig overstyre funksjonen.
# 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)
Inne i barneklassens funksjon cook_meat(), brukes funksjonen super(). Siden cook_meat() også er en funksjon i forelderklassen, ville den tilpassede funksjonen normalt overstyre den arvede koden på grunn av metodeoverstyring, men ved å bruke funksjonen super() kan du kjøre koden i forelderklassen samt den nye koden du skriver i barneklassen.
Gå først til kjøleskapet og hent de fire (4) kjøttstykkene du skal bruke til matlaging. Hvert av de fire (4) stykkene er av en forskjellig type: "pork", "beef", "lamb" og "buffalo".
Når du har samlet dem, gå til det lyse X-merket og lag objekter for hvert av kjøttstykkene slik at du kan koke dem, og for hvert kjøttobjekt, sett typen kjøtt og den ønskede tilberedningsgraden, for eksempel:
pork_meat = ready_meat() pork_meat.type = "pork" pork_meat.rarity = "medium" pork_meat.cook_meat()
Tilberedningsgrad er den koketemperaturen du ønsker at kjøttet skal kokes ved. Ha kjøttet kokt til følgende grader: "pork" kokt "medium", "beef" kokt "well done", "buffalo" kokt "medium rare", og "lamb" kokt "rare". Ved X-merket, bruk barneklassens funksjon cook_meat() etter å ha satt typen og tilberedningsgraden for kjøttet slik som vist i eksempelet ovenfor.
Når kjøttet er kokt, gå til det mørke X-merket på det gule teppet og bruk funksjonen collect() for å hente både "salt" og "pepper" fra spiskammeret. Lag en liste kalt ingredients og legg til de to ingrediensene du har hentet, slik som dette: ingredients = ["salt","pepper"].
Med de ekstra ingrediensene kan du nå servere kjøttet med tallerkener på bordet. Lag en liste for hvert av de kokte kjøttstykkene med følgende navn: served_pork, served_beef, served_lamb og served_buffalo. Legg til i disse listene kjøttet du har kokt, sammen med ingredienslisten, ved å opprette en nested list, for eksempel:
served_pork = [] served_pork.append("cooked pork") served_pork.append(ingredients)
Når listene er satt opp, gå til de gylne X-merkene og bruk funksjonen place() for å servere kjøttet på tallerkenene som ligger på benkene. Ved det øverste gylne X-merket, vend deg mot bordet og place() følgende: served_pork og served_buffalo. Ved det nederste gylne X-merket, vend deg mot bordet og place() følgende: served_lamb og served_beef. For eksempel: player.place(served_pork). Når alt kjøttet er servert, har du fullført nivået.