Fejlett Python fejlesztési tanfolyam
Fejezet
>
Szint
Haladó osztályok
Szuper függvény
Célkitűzés
Gyűjtsd össze a különféle húsokat, majd főzd meg és tálald őket különböző módokon, úgy, hogy objektumokat hozol létre szuper függvények segítségével.
A hűtőben különféle húsok találhatók, amelyeket megfőzhetsz és tálalhatsz a korábbi szinten olajjal és hagymával elkészített hozzávalóiddal. A húsokat különböző módokon és eltérő hőmérsékleten/állapotban (rarity) lehet megfőzni; ezt úgy érheted el, hogy osztályokból objektumokat hozol létre, akárcsak az előző szinteken, de ezt kiegészítheted Szuper Függvények használatával.
A super() függvényt hasonló módon használjuk, mint a metódus felülbírálását, a különbség az, hogy e függvény segítségével a szülő osztály függvényét is futtathatod a saját kódod mellett a gyerek osztályban, ahelyett, hogy teljesen felülírnád a függvényt.
# 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)
A gyerek osztály cook_meat() függvényében a super() függvényt használjuk. Mivel a cook_meat() függvényt a szülőosztályban is használják, a saját egyedi függvényed normál esetben felülírná az örökölt kódot a metódus-felülbírálás miatt, azonban a super() függvény használatával a szülőosztály kódja mellett az új, a gyerek osztályban megírt kód is végrehajtható.
Először menj el a hűtőhöz, és gyűjtsd össze azt a négy (4) darab húst, amelyeket meg szeretnél főzni. Mind a négy hús különböző típusú, nevezetesen: "pork" , "beef" , "lamb" és "buffalo".
Miután összegyűjtötted őket, menj el a világos X jelzéshez, és hozz létre objektumokat minden húsból, hogy meg tudd főzni őket; minden egyes hús objektumnál állítsd be a hús típusát, valamint azt az állapotot (rarity), amit szeretnél elérni, például:
pork_meat = ready_meat() pork_meat.type = "pork" pork_meat.rarity = "medium" pork_meat.cook_meat()
Az állapot (rarity) azt a főzési hőmérsékletet jelenti, amire szeretnéd, hogy a hús meg legyen főzve; főzd meg a húsokat a következő állapotokhoz: "pork" főzve "medium", "beef" főzve "well done", "buffalo" főzve "medium rare", és "lamb" főzve "rare". Az X jelzésnél a gyerek osztály cook_meat() függvényét használd, miután beállítottad a hús típusát és állapotát, ahogy azt a fenti példában láthatod.
Miután a húsokat megfőzted, menj el a sötét X jelzéshez a sárga szőnyegen, és használd a collect() függvényt, hogy felvedd a kamrából a "salt" és "pepper" hozzávalókat. Hozz létre egy ingredients nevű listát, és helyezd bele a két kiválasztott hozzávalót, például: ingredients = ["salt","pepper"] .
A további hozzávalókkal most tálalhatod a húst tányérok segítségével az asztalon. Hozz létre minden megfőzött húsnak egy listát a következő nevekkel: served_pork , served_beef , served_lamb és served_buffalo. Fűzd hozzá ezekhez a listákhoz a megfőzött húsokat az ingredients listával együtt, azaz egy beágyazott listát hozz létre, például:
served_pork = [] served_pork.append("cooked pork") served_pork.append(ingredients)
Miután a listákat beállítottad, menj el az arany X jelzésekhez, és használd a place() függvényt, hogy tálald a húst a pultokon lévő tányérokon. Az felső arany X jelzésnél, amint az asztal felé fordulsz, place()-old: served_pork és served_buffalo. Az alsó arany X jelzésnél, ismét az asztal felé fordulva, place()-old: served_lamb és served_beef. Például: player.place(served_pork), és ha az összes húst tálaltad, akkor teljesítetted a szintet.