上級Python開発コース
チャプター
>
レベル
上級クラス
メソッドのオーバーライド
目的
オーバーライドされたメソッドを持つオブジェクトを作成することで、オイルを瓶詰めし、肉を調理する。
野菜を調理するために利用できるオイルがいくつかありますが、扱いやすくするためにまず瓶詰めする必要があります。前のレベルと同様、クラスを使用してオブジェクトを作成する方法は、この目的を達成する効果的な手段です。また、クラス内でオブジェクト継承をより効果的に活用する方法、例えば、child クラスが parent クラスの関数をオーバーライドすることなども可能です。
# 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)
上記のコードでは、child クラスが parent クラスの関数 label_bottle() をオーバーライドして、瓶のラベルを書き換えています。これにより、async 関数を使用してカスタムメッセージを設定することも可能になります。
まずは、フィールド上にある4つの空の瓶をすべて回収し、回収後、暗いXマークの方へ歩き、クラスを使ってオブジェクトを作成してください。
瓶詰めすべきオイルは4種類あり、各々は機械の前にあるカラフルなカーペットに対応しています。黄色のカーペットでは olive_oil、緑のカーペットでは avocado_oil、青のカーペットでは canola_oil、赤のカーペットでは vegetable_oil が瓶詰めされます。
それぞれのオイルに対してオブジェクトを作成し、ラベルを書いて、child クラスの関数 label_bottle() と fill_bottle() を実行してください。例えば:
olive_oil = fill_bottle() olive_oil.label = "Olive Oil" olive_oil.label_bottle() olive_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() 関数でアイテムをキャビネットに収納し、レベルをクリアしてください。