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

Python Python Orientado a Objetos Básico Bienvenido a POO Agregando a nuestro Panda

He respondido esta pregunta del desafío y obtuve el resultado deseado, pero cuando ejecuto la respuesta obtengo que el nombre no está definido

Crear un método llamado eat. Solo debe tomar self como argumento. Dentro del método, establece el atributo is_hungry en False, ya que el Panda ya no tendrá hambre cuando coma. Además, devuelve una cadena que dice 'Bao Bao eats bamboo.' donde 'Bao Bao' es el atributo name y 'bamboo' es el atributo food.

panda.py
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):
        print(f'{panda_one.name} come {panda_one.food}')
        self.is_hungry = False


panda_one = Panda('Bao Bao', 10)
panda_one.eat()

2 Respuestas

Steven Parker
Steven Parker
244 163 puntos

Estás cerca, aquí hay algunas sugerencias:

  • un método de clase no debe hacer referencia directa a una instancia por nombre, usa "self" en su lugar
  • asegúrate de return la cadena, no necesitas print cualquier cosa
  • a la cadena le falta la puntuación final
  • para el desafío, solo necesitas definir la clase — no necesitarás crear una instancia

Aquí está el código que logré que funcionara. Tuve que recordar usar self en todo y para formatear la f-string correctamente. No usé el nombre 'Bao Bao' en ningún lado, pero aún así lo aceptó como correcto.

Es genial ver cómo usar self dentro del eat() el método puede acceder tanto al atributo de clase .food como al atributo de instancia .name.

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 f{self.name} come {self.food}.