书架 类 正在获取书名和类型

Bookshelf classes getting title and genre of book

我正在尝试编写代码,将 'fiction' 本书添加到书架,然后打印 'fiction' 本书的名称。这是我目前所拥有的。

class Book:

    def __init__(self,title,genre):
        self.title = title 
        self.genre = genre 

    def get_book(self):
        return self.title

class Bookshelf: 
    def __init__(self,title,genre,books):
        self.title = title 
        self.genre = genre 
        self.books = []

    def add_book(self,book):
        self.books.append(books)
        return True 

s1 = Book('Black Roses', 'Fiction')
s2 = Book('Red and Grey', 'Non-fiction')
s3 = Book('Pride and Prejudice','Fiction')


bookshelf = Bookshelf('Fiction')

有什么帮助吗?

由于 Bookshelf.__init__ 方法将 self.books 初始化为一个空列表,因此不需要 books 参数。

由于每个书架都专门用于特定类型,因此您应该确保书籍不会放错架子。

class Bookshelf: 
    def __init__(self,title,genre):
        self.title = title 
        self.genre = genre 
        self.books = []

    def add_book(self,book):
        if self.genre != book.genre:
            raise ValueError(r"Can't put a {book.genre} book on a {self.genre} shelf")
        self.books.append(books)

s1 = Book('Black Roses', 'Fiction')
s2 = Book('Red and Grey', 'Non-fiction')
s3 = Book('Pride and Prejudice','Fiction')

f = Bookshelf("Fiction Books", "Fiction")
nf = Bookshelf("Non-Fiction Books", "Non-fiction")

f.add_book(s1)
nf.add_book(s2)
f.add_book(s3)

# Print all fiction books
for book in f.books:
    print(book.get_book())
class Book:

    def __init__(self,title,genre):
        self.title = title 
        self.genre = genre 

    def get_book(self):
        return self.title

class Bookshelf: 
    def __init__(self):
        self.books = []

    def add_book(self,book):
        self.books.append(book)
        return True 
    def get_book(self, genre):
        res = []
        for book in self.books:
            if book.genre==genre:
                res.append(book.title)
        return res
    
s1 = Book('Black Roses', 'Fiction')
s2 = Book('Red and Grey', 'Non-fiction')
s3 = Book('Pride and Prejudice','Fiction')


z = Bookshelf()

z.add_book(s1)
z.add_book(s2)
z.add_book(s3)

z.get_book('Fiction')

输出

 ['Black Roses', 'Pride and Prejudice']