【发布时间】:2022-01-15 16:34:01
【问题描述】:
我是 python OOP 的新手。我正在尝试创建一种方法来获取用户的输入(书名、作者和流派),创建一个书对象并将其添加到列表中,仅当这样的书不存在时。最初,我想使用__eq__,但找不到让它工作的方法......
这是我的代码:
class Book:
def __init__(self, book_name, author_name, genre):
self.book_name = book_name
self.author_name = author_name
self.genre = genre
self.booksList=[]
def __eq__(self, other):
if (self.book_name == other.book_name):
return True
else:
return False
def __str__(self):
return f"The book {self.book_name} written by {self.author_name} is {self.genre}"
def addBook(self, book_name, author_name, genre):
if book_name not in self.booksList:
self.booksList.append(book_name)
print("success")
else:
print("Book already exists")
while True:
option=input("choose an operation:\n \n")
if option not in ['1','2','3','4','5','6','7','8']:
print("Please enter a valid operation")
if (option=="1"):
book_name=input ('Enter book name:')
author_name = input ('Enter author name:')
genre= input ('Enter genre:')
new_book=Book(book_name, author_name, genre)
new_book.addBook(book_name, author_name, genre)
#option2
elif (option=="2"):
pass```
【问题讨论】:
-
解释什么不起作用,会发生什么,应该发生什么?
-
我想只在列表中不存在这样的书时添加新书(显示错误消息并且不要附加它)。但是,即使我一遍又一遍地添加相同的书,它似乎也会附加一本书。
-
最好去掉书名上的空格,然后进行条件检查,即。
if book_name.strip() not in self.booklist: