我是 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```
uj5u.com熱心網友回復:
您嘗試將一本書添加到實體本身的串列中。使用 dunder 方法的簡單解決方案如下:
class Book:
def __init__(self, book_name, author_name, genre):
self.book_name = book_name
self.author_name = author_name
self.genre = genre
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}"
books = []
while True:
option=input("[-] Choose an operation:\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)
if len(books) > 0:
for i, book in enumerate(books):
if new_book == book:
break
else:
if i == len(books)-1:
books.append(new_book)
else:
books.append(new_book)
elif option == "2":
for e in books:
print(e)
uj5u.com熱心網友回復:
我想你可以做這樣的事情:
class Book:
booksList={}
def __init__(self, book_name, author_name, genre):
self.book_name = book_name
self.author_name = author_name
self.genre = genre
self.booksList[book_name] = {
"name":book_name,
"author":author_name,
"genre":genre
}
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[book_name] = {
"name":book_name,
"author":author_name,
"genre":genre
}
print("success")
else:
print("Book already exists")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/411683.html
標籤:
下一篇:將多個字串傳遞給函式并附加到串列
