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

Por favor ayuda -- el código funciona indistintamente con otros valores y produce la cadena correcta.

Este código funciona indistintamente con diferentes valores al llamar a la Clase y cambiar sus valores. ¿No estoy seguro de cuál es el problema? También sigue mencionando que 'Panda' no está definido, cuando Panda está definido como el nombre de la Clase. Por favor ayuda.

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):
        self.is_hungry = False
        return f'{self.name} eats {Panda.food}.'

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

2 Respuestas

Chris Freeman
Chris Freeman
68,469 puntos

Como se mencionó en esta respuesta, es necesario usar self.food.

Los atributos de instancia tienen dos fuentes:

  • atributos de instancia definidos en el __init__ method
  • atributos de clase definidos fuera de los métodos

Todos estos son aceptables usando el self. prefijo. Los atributos de instancia anulan (pero no sobre-escribir) atributos de clase.

Como "food" no está definido como un atributo de instancia, se verifican los atributos de clase.

Publica de nuevo si necesitas más ayuda. ¡Buena suerte!

Hola @chris -- ¡muchas gracias! Ni siquiera intenté probar self.food porque mi comprensión era que tenía que ser declarado dentro de __init__(self) código func... p. ej. def __init__(self, name, age, food): luego dentro de ese código: self.food = food .. ¿Podrías ayudarme a entender mejor cómo funciona self.food para obtener esta respuesta/salida? (¡Ya he pasado esta pregunta gracias a ti, por cierto! Pero solo quiero entender por qué esto es mejor que usar Panda.food y también ¿cómo funciona esto?

Chris Freeman
Chris Freeman
68,469 puntos

He actualizado mi respuesta arriba.