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

He intentado muchas veces en este examen. Pero no es correcto. Por favor, ayúdame.

NameError: name 'Book' is not defined.

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 isinstance(otro, Libro):
            return self.autor == otro.autor y self.title == otro.title
        return False
bookcase.py
from libro import Libro


class BookCase:
    def __init__(self):
       self.libros = 

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

1 Respuesta

Jeff Muday
Jeff Muday
28,732 Puntos

La tercera parte del desafío prueba que comprendiste el yield from palabras clave y cómo se relacionan con el class object __iter__ método.

Es bastante simple. Una vez que agregues este método a tu objeto, puedes pasar el desafío.

from libro import Libro


class BookCase:
    def __init__(self):
       self.libros = 

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

    def __iter__(self):
        yield from self.libros

Los __iter__ es bastante útil... puedes usarlo para gestionar el bucle a través de tu colección. El desafío NO pide esto. Pero puedes usar este código así.

book1 = Libro('J.D. Salinger', 'The Catcher in the Rye')
book2 = Libro('Ayn Rand', 'Atlas Shrugged')
book3 = Libro('George Orwell', 'Animal Farm')

mybookcase = BookCase()

mybookcase.add_books(book1)
mybookcase.add_book(book2)
mybookcase.add_book(book3)

para libro en mybookcase:
   print(libro)

Aquí está la salida:

jeff@pop-os:~/projects/challeges$ python book.py 
J.D. Salinger, The Catcher in the Rye
Ayn Rand, Atlas Shrugged
George Orwell, Animal Farm