Pokročilý kurz vývoje v Pythonu
Kapitola
>
Úroveň
Pokročilé třídy
Super funkce
Cíl
Sežeň různé druhy masa, poté je uvař a podávej různými způsoby vytvořením objektů se super funkcemi.
V lednici je různé maso, které můžeš vařit a podávat s cibulí, kterou jsi připravil s olejem v předchozí úrovni. Maso může být vařeno různými způsoby a na různé teploty/stupně propečení. To můžeš dosáhnout vytvořením objektů z tříd, podobně jako v předchozích úrovních, ale lze to vylepšit pomocí Super Funkcí.
Funkce super() se využívá podobně jako přepisování metod, rozdíl je v tom, že použitím této funkce můžeš spustit funkci třídy rodiče kromě vlastního kódu ve třídě potomka místo úplného přepsání funkce.
# 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)
Uvnitř funkce třídy potomka cook_meat() se používá funkce super(). Protože cook_meat() je také funkce používaná v rodičovské třídě, vlastní funkce by normálně přepsala zděděný kód kvůli přepisování metod, ale použitím funkce super() můžeš spustit kód v třídě rodiče i nový kód, který napíšeš ve třídě potomka.
Nejprve jdi k lednici a seber čtyři (4) kusy masa, které budeš používat k vaření. Každé ze čtyř (4) mas je jiného druhu, a to: "pork", "beef", "lamb" a "buffalo".
Jakmile je sebereš, jdi k označení X světlem a vytvoř objekty pro každé maso, aby sis je mohl uvařit a pro každý objekt masa nastav typ masa a stupeň propečení, jak je uvedeno v příkladu:
pork_meat = ready_meat() pork_meat.type = "pork" pork_meat.rarity = "medium" pork_meat.cook_meat()
Stupeň propečení je teplota, na kterou chceš, aby bylo maso uvařeno. Nech maso uvařit do následujících stupňů: "pork" uvařené "medium", "beef" uvařené "well done", "buffalo" uvařené "medium rare" a "lamb" uvařené "rare". Na značce X použij funkci cook_meat() potomka po nastavení typu a stupně propečení masa, jak je ukázáno v příkladu výše.
Poté, co bude maso uvařené, jdi k tmavé značce X na žlutém koberci a použij funkci collect(), abys sebral jak "salt", tak "pepper" z komory. Vytvoř seznam s názvem ingredients a umísti do něj oba sebrané ingredience, například: ingredients = ["salt","pepper"].
S těmito dodatečnými ingrediencemi nyní můžeš podávat maso na talířích na stole. Vytvoř seznam pro každé z uvařených mas s následujícími názvy: served_pork, served_beef, served_lamb a served_buffalo. Do těchto seznamů přidej uvařené maso spolu se seznamem ingrediencí vytvořením vnořeného seznamu, například:
served_pork = [] served_pork.append("cooked pork") served_pork.append(ingredients)
Jakmile budou seznamy připraveny, jdi k zlatým značkám X a použij funkci place(), aby ses postaral o podávání masa na talířích, které jsou na pultu. Na horní zlaté značce X, otoč se ke stolu, a place(): served_pork a served_buffalo. Na dolní zlaté značce X, otoč se ke stolu, a place(): served_lamb a served_beef. Například: player.place(served_pork). Jakmile budeš mít podáno veškeré maso, úroveň dokončíš.