Курс по усъвършенствано разработване с 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). След като всички меса бъдат сервирани, вие ще завършите нивото.