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
sophiawong
9,104 Puntos¿Qué hay de malo en mi código, por favor?
He establecido "Bao Bao" en self.name. ¿Pero por qué el sistema me dice que no funciona?
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.name = 'Bao Bao '
self.is_hungry = False
return f'{self.name} eats {self.food}'
4 respuestas
Chris Freeman
68,469 puntosHola diginoma, el eat() el método está anulando el self.name atributo. Elimina la asignación a self.name dentro eat()
Como está ahora, es "Boa Boa come"... todo el tiempo
Publica de nuevo si necesitas más ayuda. ¡Buena suerte!
sophiawong
9,104 PuntosLo resolví
Puse el código en la posición correcta :-)
¡Gracias!
diginoma
Estudiante de Cursos Plus 8,009 puntosestoy teniendo un problema similar...
Traceback (most recent call last):
- Bao Bao come bayas.
- Charles come bayas.
¿cuál es el problema real aquí?
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.name = 'Bao Bao'
self.is_hungry = False
return f'{self.name} eats {self.food}.'
Chris Freeman
68,469 puntosHola diginoma, el eat() el método está anulando el self.name atributo. Elimina la asignación a self.name dentro eat()
Como está ahora, es "Boa Boa come"... todo el tiempo
Publica de nuevo si necesitas más ayuda. ¡Buena suerte!
Gunter Ostendorp
1,740 PuntosPara esto, lo que terminé haciendo es llamar la clase dentro del método eat y pasar el argumento name en lugar de definirlo en el método. De esa manera podrías cambiarla en cada instancia separada en lugar de que el nombre sea siempre Bao Bao cada vez que llamas al método eat.
Chris Freeman
68,469 puntosHola Gunter Ostendorp, es el __init__ método que establece los self.name atributo de las instancias para que el nombre esté disponible y sea único para esa instancia. Pasar un nombre simplemente anularía el atributo de instancia y requeriría que el código que llama mantenga un registro del nombre fuera de la clase. Esto va en contra del propósito de tener el atributo name.
Responde si hay algo más que no estoy viendo. ¡Buena suerte!
diginoma
Estudiante de Cursos Plus 8,009 puntos¡¡¡ohhhh! bueno, ahora que lo planteas así ¡lo entiendo! ¡Gracias!