You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

图书馆管理系统开发:如何为BookList类定义存储Book实例集合的方法?

实现BookList类存储图书实例

我们可以用字典作为存储容器,以图书的bookID作为键(保证唯一性),对应的Books实例作为值。下面是具体的实现代码,附带常用的操作方法:

完整代码示例

import random

class Books:
    def __init__(self, title=None, author=None, year=None, publisher=None, num_copies=None,
                 num_available_copies=None, publication_date=None):
        self.bookID = random.randint(1, 1000)
        self.title = title
        self.author = author
        self.year = year
        self.publisher = publisher
        self.num_copies = num_copies
        self.num_available_copies = num_available_copies
        self.publication_date = publication_date

class BookList:
    def __init__(self):
        # 初始化字典,用于存储图书实例,key为bookID,value为Books对象
        self.books_dict = {}

    def add_book(self, book):
        # 添加图书到字典,自动用bookID作为键
        if isinstance(book, Books):
            self.books_dict[book.bookID] = book
            print(f"图书《{book.title}》已添加,ID: {book.bookID}")
        else:
            print("只能添加Books类的实例")

    def get_book_by_id(self, book_id):
        # 根据ID查找图书
        return self.books_dict.get(book_id, None)

    def remove_book(self, book_id):
        # 根据ID删除图书
        if book_id in self.books_dict:
            removed_book = self.books_dict.pop(book_id)
            print(f"已删除图书《{removed_book.title}》")
        else:
            print("未找到该ID的图书")

    def list_all_books(self):
        # 列出所有图书的基本信息
        if not self.books_dict:
            print("暂无图书记录")
            return
        print("所有图书记录:")
        for book_id, book in self.books_dict.items():
            print(f"ID: {book_id}, 书名: {book.title}, 作者: {book.author}, 可借数量: {book.num_available_copies}")

代码说明

  • BookList的构造方法里初始化了books_dict字典,专门用来存储图书实例。
  • add_book方法会先校验传入对象是否为Books实例,确认后用它的bookID作为键存入字典(注意当前bookID是随机生成1-1000的整数,存在重复概率,后续可以改成自增ID更稳妥)。
  • get_book_by_id、remove_book、list_all_books是日常管理图书时常用的操作方法,方便快速查询、删除和查看全部图书。

使用示例

# 创建图书列表实例
library_books = BookList()

# 创建几本图书
book1 = Books(title="Python编程从入门到实践", author="埃里克·马瑟斯", year=2020, num_available_copies=5)
book2 = Books(title="数据结构与算法分析", author="马克·艾伦·维斯", year=2019, num_available_copies=3)

# 添加图书
library_books.add_book(book1)
library_books.add_book(book2)

# 查找图书
found_book = library_books.get_book_by_id(book1.bookID)
if found_book:
    print(f"找到图书:{found_book.title}")

# 列出所有图书
library_books.list_all_books()

# 删除图书
library_books.remove_book(book2.bookID)
library_books.list_all_books()

内容的提问来源于stack exchange,提问作者user19713364

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 15:45:30