高级 Python 开发课程
第 章
>
第 级
高级类
方法重写
目标
通过创建覆盖方法的对象将油装瓶以烹饪肉类。
有一些油可以用来烹饪蔬菜,但为了便于使用,需要先将其装瓶。与上一关卡类似,使用类和创建对象是一种有效的方法。不过,在类中更有效地利用对象继承也有其他方法,比如让 子类 覆盖 父类 中的函数。
# Parent Class
class oil_bottle:
label = ""
async def label_bottle(self):
await player.read()
# Child Class
class fill_bottle(oil_bottle):
def fill_bottle(self):
player.place("empty bottle")
player.collect("oilbottle")
async def label_bottle(self):
await player.write(self.label)
在上述代码中,子类 覆盖了 父类 中的 label_bottle() 函数,以重新写入瓶子上的标签。这也允许你使用异步函数设置自定义消息。
首先,到场地上收集所有四(4)个空瓶,收集完成后,走向黑色的 X 标记,并使用这些类创建对象。
共有四(4)种油需要装瓶,它们对应于机器前彩色地毯上的颜色:olive_oil 在黄色地毯上装瓶,avocado_oil 在绿色地毯上装瓶,canola_oil 在蓝色地毯上装瓶,vegetable_oil 在红色地毯上装瓶。
为每种油创建对象,写下它们的标签,并激活 子类 的 label_bottle() 和 fill_bottle() 函数,例如:
olive_oil = fill_bottle() ovive_oil.label = "Olive Oil" ovive_oil.label_bottle() ovive_oil.fill_bottle()
每个标签应包含每种油的名称,首字母大写,格式如下:"Olive Oil"、"Avocado Oil"、"Canola Oil" 和 "Vegetable Oil"。
装瓶完油后,走向位于麻袋前的浅色 X 标记,并使用 collect() 函数从麻袋中取出 "onion"。之后,走向金色的 X 标记,并使用油来烹饪洋葱,将它们存入名为 ingredients 的列表中,如:ingredients = ["Olive Oil", "onion"]。使用 place() 函数与该列表一起烹饪食材。
最后,将剩余的油存入一个名为 oils 的列表中,如:oils = ["Avocado Oil","Canola Oil","Vegetable Oil"]。走向位于紫色地毯上的浅色 X 标记,面向橱柜,使用 place() 函数与油的列表一起,将物品存入橱柜,完成关卡。