如何实现用户每次输入后自动创建Book类实例并可重复调用
自动创建并管理Book类实例的解决方案
不用手动定义book1、book2这类变量,直接用**容器(列表或字典)**统一存储实例就行,既能自动创建,又方便后续调用。下面是两种实用实现方式:
方法一:用列表存储实例
列表会按创建顺序保存所有Book实例,通过索引就能调用(比如books[0]对应第一个创建的实例,相当于book1)。
class Book(object): def __init__(self, title: str, author: str, isbn: int, genre: str, numCopies: int): self._title = title self._author = author self._isbn = isbn self._genre = genre self._numCopies = numCopies # 用列表存储所有书籍实例 books = [] book_count = 1 while True: print(f"\n请输入第{book_count}本图书信息(输入空标题结束)") title = input("书名:") if not title: # 输入空标题时退出循环 break author = input("作者:") isbn = int(input("ISBN:")) genre = input("类别:") numCopies = int(input("库存数量:")) # 创建实例并添加到列表 new_book = Book(title, author, isbn, genre, numCopies) books.append(new_book) book_count += 1 # 调用实例示例:访问第一本书的书名 if books: print(f"\n第一本书的书名:{books[0]._title}") # 遍历所有书籍实例 for idx, book in enumerate(books, 1): print(f"\n第{idx}本书信息:") print(f"书名:{book._title},作者:{book._author},ISBN:{book._isbn}")
方法二:用字典存储实例
如果需要像book1、book2这样的名称直接调用,可以用字典,把"book1"、"book2"作为键,实例作为值。
class Book(object): def __init__(self, title: str, author: str, isbn: int, genre: str, numCopies: int): self._title = title self._author = author self._isbn = isbn self._genre = genre self._numCopies = numCopies # 用字典存储所有书籍实例,键为"book1"、"book2"等 book_dict = {} book_count = 1 while True: print(f"\n请输入第{book_count}本图书信息(输入空标题结束)") title = input("书名:") if not title: break author = input("作者:") isbn = int(input("ISBN:")) genre = input("类别:") numCopies = int(input("库存数量:")) # 创建实例并添加到字典 book_key = f"book{book_count}" book_dict[book_key] = Book(title, author, isbn, genre, numCopies) book_count += 1 # 调用实例示例:直接用"book1"访问 if "book1" in book_dict: print(f"\nbook1的书名:{book_dict['book1']._title}") # 遍历所有书籍实例 for key, book in book_dict.items(): print(f"\n{key}信息:") print(f"书名:{book._title},作者:{book._author},ISBN:{book._isbn}")
关键说明
- 两种方法都不需要手动定义
book1、book2,循环会自动完成实例创建和存储 - 列表适合按顺序批量处理实例,字典适合按自定义名称单独调用
- 后续需要使用实例时,直接从容器中取出即可,比如
books[0]或book_dict['book1']
内容的提问来源于stack exchange,提问作者Moustafa Abouamer
相关产品推荐
相关产品推荐

