Bienvenido a la Comunidad de Treehouse
¿Quieres colaborar en errores de código? ¿Tienes errores que necesitan comentarios? ¿Buscas un par de ojos adicionales en tu último proyecto? aquí.
¿Buscas aprender algo nuevo?
Treehouse ofrece una prueba gratuita de siete días para estudiantes nuevos. Obtén acceso a miles de horas de contenido y únete a miles de
Inicia tu prueba gratuita
Federico Isabello
1,637 Puntos¡Por favor, puedes ayudarme a identificar dónde está el problema aquí? ¡Gracias!
class Panda:
def __init__(self, name, age):
self.is_hungry = True
self.name = name
self.age = age
def eat(self):
self.is_hungry = False
return ("Bao Bao eats {}.".format(food))
class Panda:
especie = 'Ailuropoda melanoleuca'
comida = 'bamboo'
def __init__(self, name, edad):
self.is_hungry = Verdadero
self.name = name
self.edad = edad
def eat(self):
self.is_hungry = False
return (Bao Bao eats {}..format(comida))
5 respuestas
Kristjan Vingel
7,992 PuntosEstás devolviendo "Bao Bao" pero necesitas devolver el atributo name. No olvides agregarlo al argumento format también.
Una clase es un plano para crear objetos. ¿Qué pasa si queremos crear otro Panda usando esa clase y ese panda tendrá un nombre diferente, como "Mao Mao" por ejemplo? Entonces el método eat no tendría sentido ya que también diría: "Bao Bao eats ...". Queremos que sea reutilizable para que podamos crear diferentes pandas con diferentes nombres y cuando llamemos al método eat en cualquiera de ellos, dirá el nombre correcto, el nombre con el que inicializamos el objeto :)
Federico Isabello
1,637 Puntos¿De dónde y cómo debería declarar el nombre Bao Bao?
Federico Isabello
1,637 Puntos¡Gracias por tu ayuda! Este es el código que escribí por ahora
class Panda:
def __init__(self, name, age):
self.is_hungry = True
self.name = name
self.age = age
def eat(self):
self.is_hungry = False
name = 'Bao Bao'
return (f*"{name} eats {food}.")
Kristjan Vingel
7,992 PuntosNo necesitas declarar el nombre "Bao Bao" en el método eat. Si entiendo bien, un nuevo objeto panda se crea bajo el capó por el espacio de trabajo de Treehouse algo como esto:
panda1 = Panda(Bao Bao, 10)
...y luego usan el método eat en este nuevo objeto panda, así:
panda1.eat()
El nombre y la edad se pasan al constructor / inicializador cuando se inicializa panda1. Por eso declaramos el nombre y la edad en el def init(self, name, age) cosa - entonces podemos usar estos valores en los métodos (como el método eat).
Con la clase, podemos crear tantos pandas como queramos:
panda1 = Panda(Bao Bao, 10)
panda2 = Panda(Bao Mao, 6)
panda3 = Panda(Mao Mao, 4)
panda4 = Panda(Yao Yao, 3)
Y como mencioné, podemos llamar al método eat() en cualquiera de ellos y dirá el nombre correcto.
Pero me doy cuenta de que la parte confusa es que no inicializamos el objeto nosotros mismos, solo tenemos que crear el plano (clase) para que la máquina de Treehouse pueda usar esa clase para inicializar pandas y verificar si sabemos cómo declarar una clase en Python.
¡Ps! Espero no haber metido la pata con la programación orientada a objetos de Python. Si lo hice, por favor que alguien más inteligente me corrija.
Federico Isabello
1,637 PuntosSí entiendo tu punto, ¡pero aún no puedo hacerlo bien! Esto es lo que he hecho
class Panda:
def __init__(self, name, age):
self.is_hungry = True
self.name = name
self.age = age
def eat(self):
self.is_hungry = False
return (f*"{name} eats {food}.")
Panda.eat('Bao, Bao')