หลักสูตรการพัฒนาด้วย Python ขั้นสูง
บทที่
>
ระดับ
คลาสขั้นสูง
ฟังก์ชันสุดยอด
วัตถุประสงค์
รวบรวมเนื้อสัตว์หลากหลายชนิด จากนั้นปรุงและเสิร์ฟในรูปแบบต่างๆ โดยการสร้างอ็อบเจ็กต์ด้วยฟังก์ชันซูเปอร์
ตู้เย็นมีเนื้อสัตว์หลากหลายชนิดที่คุณสามารถปรุงและเสิร์ฟควบคู่กับหอมหัวใหญ่ที่คุณเตรียมไว้ด้วยน้ำมันในระดับก่อนหน้า เนื้อสัตว์เหล่านี้สามารถปรุงในรูปแบบต่างๆ และปรุงได้ตามระดับความสุก/ความหายากที่แตกต่างกัน คุณสามารถทำเช่นนี้โดยการสร้างอ็อบเจ็กต์จากคลาส เหมือนในระดับก่อนหน้า แต่สามารถปรับปรุงเพิ่มเติมโดยใช้ ซูเปอร์ฟังก์ชัน
ฟังก์ชัน super() ถูกใช้ในลักษณะเดียวกับการเขียนทับเมธอด (method 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() ยังถูกใช้ในคลาส แม่ ฟังก์ชันที่ปรับแต่งเองโดยปกติจะเขียนทับโค้ดที่ได้รับมาจากคลาสแม่ผ่านการ method overriding แต่โดยการใช้ฟังก์ชัน super() คุณสามารถเรียกใช้โค้ดในคลาส แม่ ไปพร้อมกับโค้ดใหม่ที่คุณเขียนในคลาส ลูก
เริ่มต้นโดยการเดินไปที่ตู้เย็นและเก็บเนื้อสัตว์สี่ (4) ชิ้นที่คุณจะใช้ปรุงอาหาร เนื้อสัตว์ทั้งสี่ชนิดมีประเภทที่แตกต่างกัน ซึ่งได้แก่ : "pork" , "beef" , "lamb" และ "buffalo"
หลังจากเก็บเนื้อแล้ว ให้เดินไปยังเครื่องหมาย X ที่มีแสง แล้วสร้างอ็อบเจ็กต์สำหรับเนื้อแต่ละชนิดเพื่อปรุงอาหาร และสำหรับอ็อบเจ็กต์เนื้อแต่ละตัว ให้ตั้งค่า type ของเนื้อและ 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() ของคลาสลูกหลังจากตั้งค่า type และ rarity ของเนื้อดังที่แสดงในตัวอย่างข้างต้น
เมื่อเนื้อถูกปรุงเรียบร้อยแล้ว ให้เดินไปที่เครื่องหมาย 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) เมื่อเนื้อทั้งหมดถูกเสิร์ฟแล้ว คุณก็จะผ่านด่านนี้ไป