高级 Python 开发课程
第 章
>
第 级
高级类
超级函数
目标
收集各种肉类,然后通过创建带有超级函数的对象来以不同方式烹饪和上菜。
冰箱里有各种肉类,你可以使用前一关准备好的用油烹饪的洋葱来烹饪和上菜。这些肉类可以以不同的方式烹饪,并达到不同的温度/稀有度,你可以通过从类中创建对象来实现这一点,就像之前的关卡一样,但可以使用 超级函数 进行增强。
super() 函数的用法与方法重写类似,不同之处在于,通过使用该函数,你可以在子类中运行 父类 的函数代码以及你自己的代码,而不是完全覆盖该函数。
# 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)
在子 class 的 cook_meat() 函数内部,使用了 super() 函数。由于 cook_meat() 也是父类中的一个函数,自定义函数通常会由于 方法重写 而覆盖继承的代码,但通过使用 super() 函数,你可以在子类中执行父类的代码以及你编写的新代码。
首先,走到冰箱处,收集你要用来烹饪的四 (4) 块肉。每种肉都有不同的类型,分别是:"pork"、"beef"、"lamb" 和 "buffalo"。
收集完毕后,走到 X 标记处,创建每种肉的对象来烹饪它们,并为每个肉对象设置你想要烹饪的肉的类型和稀有度,例如:
pork_meat = ready_meat() pork_meat.type = "pork" pork_meat.rarity = "medium" pork_meat.cook_meat()
稀有度是你希望肉类烹饪到的温度,肉类应烹饪到以下稀有度:"pork" 要烹饪到 "medium","beef" 要烹饪到 "well done","buffalo" 要烹饪到 "medium rare",而 "lamb" 要烹饪到 "rare"。在 X 标记处,在设置肉的类型和稀有度后,使用子类函数 cook_meat(),如上例所示。
一旦肉类被烹饪完毕,走到黄色地毯上的深色 X 标记处,使用 collect() 函数从储藏室中取出 "salt" 和 "pepper" 两样调味品。创建一个名为 ingredients 的列表,并将这两种取出的调味品放进去,如:ingredients = ["salt","pepper"]。
利用这些额外的调味品,你现在可以在桌子上的盘子里上菜。为每种烹饪过的肉创建一个列表,名称分别为:served_pork、served_beef、served_lamb 和 served_buffalo。将你烹饪好的肉和调料列表作为一个 嵌套列表 添加到这些列表中,例如:
served_pork = [] served_pork.append("cooked pork") served_pork.append(ingredients)
一旦列表设置完毕,走到金色 X 标记处,使用 place() 函数将肉放在柜台上的盘子里。在顶部的金色 X 标记处,面向桌子,place():served_pork 和 served_buffalo;在底部的金色 X 标记处,面向桌子,place():served_lamb 和 served_beef。例如:player.place(served_pork)。当所有肉都被上菜后,你将完成这一关。