Προχωρημένο Μάθημα Ανάπτυξης σε 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). Μόλις σερβιριστούν όλα τα κρέατα, θα έχετε ολοκληρώσει το επίπεδο.