Pokročilý kurz vývoje v Pythonu
Kapitola
>
Úroveň
Dekorátory
Používání dekorátorů
Vlastní funkce mají širokou škálu využití, nicméně někdy možná budete chtít přidat další funkcionalitu do již existující funkce. To se nazývá dekorátor, což je funkce navržená tak, aby rozšířila existující funkci, odtud i název.
Pro tuto úroveň je potřeba připravit pece, aby byly připraveny na přípravu jídla. Použijte dekorátory k open() a close() mezi přikládáním palivového dřeva do pecí.

Cíl
Naplňte pece dřevem a nastavte pece tak, aby byly připraveny na vaření pomocí dekorátorů.
Cihlové pece je třeba připravit, aby bylo možné později odpoledne nebo večer péct jídlo. Pece jsou vypnuté a prázdné, a proto je třeba je zapálit dřevem. Vezměte si dřevo a nechte ho vložit do pecí, abyste mohli začít vařit. I když to můžete provést ručně nebo pomocí vlastní funkce, proces lze urychlit použitím dekorátorů.
Dekorátory jsou doplňky, které lze přidat k vlastní funkci za účelem rozšíření její funkčnosti na vyžádání, aniž by bylo nutné ji zbytečně komplikovat podmínkami.
# Decorator, adds extra functionality to another function
def load_wood(func):
def load():
player.open()
func()
player.close()
return load
# Custom function that can be decorated
def add_wood():
player.place("firewood")
player.speak("Three logs placed in oven")
# Decorate the custom function
prep_oven = load_wood(add_wood)
Vydejte se do skladu na spodní části mapy a seberte všechny čtyři (4) svazky dřeva. Jděte k zlaté značce X a použijte funkci read() k ověření poznámky na tabuli, kde je uvedeno, na jaké teploty by měly být pece nastaveny. Poznamenejte si informace ve vyskakovacím okně, budete je později potřebovat.
Poté se vydejte ke světlým značkám X u pece a použijte dekorovanou funkci k vložení dřeva, například takto: prep_oven(). Když vkládáte dřevo do pece, vydejte se k tmavým značkám X na barevných kobercích a použijte asynchronní funkci question() k nastavení teploty pecí.
Podpůrná funkce bude předem nastavena, pojmenovaná jako set_temperature(), a vaše odpověď na otázku určí, zda bude teplota nastavena na High nebo na Medium. Nastavte teplotu napsáním funkce a odpovědí na otázku s použitím poznámky, kterou jste si dříve přečetli, přičemž každá teplota bude nastavena v souladu s odpovídajícím barevným kobercem. Nezapomeňte při používání asynchronních funkcí použít await, například: await set_temperature()
Jakmile připravíte a nastavíte všechny čtyři (4) pece, dokončíte úroveň.