Curso Avanzado de Desarrollo en Python
Capítulo
>
Nivel
Clases Avanzadas
Función Súper
Objetivo
Reúne varias carnes y cocínalas y sírvelas de distintas maneras creando objetos con super funciones.
El refrigerador contiene varias carnes que puedes cocinar y servir con las cebollas que preparaste con aceite en el nivel anterior. Las carnes se pueden cocinar de diferentes maneras y hasta diferentes temperaturas/rareza, lo cual puedes lograr creando objetos a partir de clases, de manera similar a los niveles anteriores, pero que puede mejorarse usando las Super Funciones.
La función super() se utiliza de forma similar a la sobrescritura de métodos; la diferencia es que, al usar esta función, puedes ejecutar la función de la clase padre además de tu propio código en la clase hija, en lugar de sobrescribir completamente la función.
# 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)
Dentro de la función de la clase hija cook_meat(), se utiliza la función super(). Dado que cook_meat() también es una función utilizada en la clase padre, la función personalizada normalmente sobrescribiría el código heredado debido a la sobrescritura de métodos, pero al usar la función super() puedes ejecutar el código en la clase padre junto con el nuevo código que escribas en la clase hija.
Primero, camina hacia el refrigerador y recoge las cuatro (4) piezas de carne que vas a usar para cocinar. Cada una de las cuatro (4) carnes es de un tipo diferente, siendo estos: "pork", "beef", "lamb" y "buffalo".
Una vez recogidas, camina hasta la marca X luminosa y crea objetos de cada una de las carnes para cocinarlas y, para cada objeto de carne, asigna el tipo y la rareza a la que deseas cocinarlas, por ejemplo:
pork_meat = ready_meat() pork_meat.type = "pork" pork_meat.rarity = "medium" pork_meat.cook_meat()
La rareza es la temperatura de cocción a la que deseas que se cocine una carne. Haz que las carnes se cocinen hasta las siguientes rarezas: "pork" cocinado "medium", "beef" cocinado "well done", "buffalo" cocinado "medium rare" y "lamb" cocinado "rare". En la marca X, utiliza la función de la clase hija cook_meat() después de establecer el tipo y la rareza de la carne, como se muestra en el ejemplo anterior.
Una vez cocinadas las carnes, camina hacia la marca X oscura en la alfombra amarilla y utiliza la función collect() para recoger tanto "salt" como "pepper" de la despensa. Crea una lista llamada ingredients y coloca los dos ingredientes recogidos, de la siguiente manera: ingredients = ["salt","pepper"].
Con los ingredientes adicionales, ahora puedes servir la carne con platos sobre la mesa. Crea una lista para cada una de las carnes cocinadas con los siguientes nombres: served_pork, served_beef, served_lamb y served_buffalo. Agrega a estas listas las carnes que cocinaste junto con la lista de ingredientes creando una lista anidada, por ejemplo:
served_pork = [] served_pork.append("cooked pork") served_pork.append(ingredients)
Una vez configuradas las listas, camina hacia las marcas X doradas y utiliza la función place() para servir la carne en los platos que están sobre los mostradores. En la marca X dorada superior, frente a la mesa, usa place() sobre: served_pork y served_buffalo. En la marca X dorada inferior, frente a la mesa, usa place() sobre: served_lamb y served_beef. Por ejemplo: player.place(served_pork). Una vez servidas todas las carnes, habrás completado el nivel.