Поглиблений курс розробки на 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)
У функції класу-дитини cook_meat() використовується функція super(). Оскільки cook_meat() також є функцією, що використовується в класі-батька, звичайно, налаштована функція перевизначила б успадкований код через перевизначення методу, але, використовуючи функцію super(), ви можете виконати код з класу-батька, а також новий код, який ви пишете в класі-дитини.
Спочатку підіть до холодильника та зберіть чотири (4) шматки м'яса, які ви збираєтеся використовувати для приготування. Кожне з чотирьох (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). Після того, як усе м'ясо буде подано, ви завершите рівень.