Продвинутый курс разработки на 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() 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() со списком масел для хранения предметов в шкафу и завершения уровня.