קורס פיתוח מתקדם בפייתון
פרק
>
רמה
מחלקות מתקדמות
פונקציה סופר
מטרה
אסוף סוגי בשר שונים, ובשל והגש אותם בדרכים מגוונות על ידי יצירת אובייקטים עם פונקציות סופר.
במקרר יש בשרים שונים שאותם אתה יכול לבשל ולהגיש יחד עם הבצלים שהכנת עם שמן בשלב הקודם. ניתן לבשל את הבשרים בדרכים שונות ובטמפרטורות/מידת בישול שונות. ניתן להשיג זאת על ידי יצירת אובייקטים מתוך מחלקות, בדומה לשלבים הקודמים, אך ניתן לשפר זאת באמצעות פונקציות סופר.
הפונקציה super() משמשת בצורה דומה לכתיבת שיטה מחדש (overriding), ההבדל הוא שעם שימוש בפונקציה זו ניתן להריץ את פונקציית המחלקה האם בנוסף לקוד שלך במחלקת הילד במקום ל-Overriding מלא של הפונקציה.
# 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 המואר ויצר אובייקטים לכל אחד מהבשרים בכדי לבשל אותם. עבור כל אובייקט בשר, הגדר את סוג הבשר ואת מידת הבישול (rarity) שבה תרצה לבשל אותם. לדוגמה:
pork_meat = ready_meat() pork_meat.type = "pork" pork_meat.rarity = "medium" pork_meat.cook_meat()
מידת הבישול (rarity) היא טמפרטורת הבישול שבה תרצה שבשר יתבשל. בישל את הבשרים עד למידת הבישול הבאה: בשר מסוג "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. הוסף לרשימות אלו את הבשרים שבישלת יחד עם רשימת המרכיבים על ידי יצירת רשימה מקושרת (nested list), לדוגמה:
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). לאחר שכל הבשרים הוגשו, השלמת את השלב.