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 Emular funciones integradas Emular funciones integradas

sigue diciendo Bummer: AttributeError: el objeto 'BookCase' no tiene el atributo 'books'

Bummer: AttributeError: 'BookCase' object has no attribute 'books'

book.py
class Libro:
    def __init__(self, autor, title):
        self.autor = autor
        self.title = title

    def __str__(self):
        return f'{self.author}, {self.title}'

    def __eq__(self, otro):
        if self.autor == otro.autor y self.title == otro.title:
            return Verdadero
        else:
            return False
bookcase.py
from libro import Libro


class BookCase:

    def add_books(self, libro):
        self.libros.append(libro)

    def __iter__(self):
        yield from self.libros

2 Respuestas

Chris Freeman
Chris Freeman
68,469 puntos

Hola Leslio McKeown, el atributo books debe ser definido en la clase BookCase.

Similar a la Book clase, y una __init__ método a BookCase que establece self.books = []

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

por definido es self.books = books?

porque todavía no lo entiendo ni después de volver a ver los videos

Estoy recibiendo un nuevo mensaje de error: TypeError: init() falta 1 argumento posicional requerido: 'books'

Chris Freeman
Chris Freeman
68,469 puntos

En la add_books método, book las instancias se agregan a self.books Entonces, self.books debe ser inicializado como un conjunto vacío .

Crear el faltante __init__ método con el BookCase clase.

class BookCase:

    # Agregue el método __init__ faltante aquí

    def add_books(self, libro):
        self.libros.append(libro)

    def __iter__(self):
        yield from self.libros

esto no parece funcionar muestra: Bummer: TypeError: init() falta 1 argumento posicional requerido: 'books'

class BookCase:

    def __init__(self):
        self.libros = 

    def add_books(self, libro):
        self.libros.append(libro)

    def __iter__(self):
        yield from self.libros

[MOD: formato ```python añadido -cf]

Chris Freeman
Chris Freeman
68,469 puntos

Cuando pegué tu código en el desafío, funcionó para mí.