PyCharm中图书馆管理系统报错:NameError及参数问题求助
图书馆管理系统报错排查与解决
1. 先解决NameError: name 'name' is not defined
这个错误的核心是你实例化Library类时用到的变量name未定义。比如你写了lib = Library(name),但代码里从没给name赋值过。你后来手动定义name = 'Mizakson'后这个错误消失,说明问题根源就是变量未定义,这一步的处理是对的。
2. 解决Library() takes no arguments
这个报错说明你的Library类的构造方法(__init__)不接受除self之外的参数,但你实例化时传了name进去。
错误示例:
如果你的类是这样写的,就会触发这个错误:
class Library: def __init__(self): # 没有定义其他参数 pass
修正方法:
给__init__方法加上需要的参数(比如name),同时可以把读取pythonDatabase.txt的逻辑整合进去:
class Library: def __init__(self, name): self.library_name = name # 保存图书馆名称 self.books = self._load_books_from_file() # 加载书籍 def _load_books_from_file(self): # 从pythonDatabase.txt读取书籍 book_list = [] try: with open('pythonDatabase.txt', 'r', encoding='utf-8') as f: for line in f: book_title = line.strip() if book_title: # 跳过空行 book_list.append(book_title) except FileNotFoundError: print("错误:未找到pythonDatabase.txt文件") return book_list
实例化代码:
现在可以正常实例化了:
name = 'Mizakson' my_library = Library(name)
额外注意事项
- 确保
pythonDatabase.txt文件在PyCharm的当前工作目录下(可以通过打印import os; print(os.getcwd())查看当前路径),如果不在,需要调整文件路径或者把文件移到对应目录。 - 如果文件编码有问题,打开时指定
encoding='utf-8'避免乱码。
内容的提问来源于stack exchange,提问作者Mizakson
相关产品推荐
相关产品推荐

