gpt4 book ai didi

Python 3.4.3 - 具有相同信息的多个对象

转载 作者:行者123 更新时间:2023-12-01 04:38:22 25 4
gpt4 key购买 nike

在我的

class Library(object):

def __init__(self):
self.books = []


def add_book(self, book):
if book.get_title() not in self.books:
self.books.append(book)
else:
print("This book is already added.")

然后在我的 main() 中我得到:

if command == "add":

title = input("Please type in the title of the book:")

author = input("Please type in the author of the book:")

year = int(input("Please type in the year of the book:"))

my_lib.add_book( Book(title, author, year) )

print("The book has been added.")

elif command == "view":
my_lib.view_library()

elif command == "get":

book_title = input("Please type in the title of the book:")
book = my_lib.find_book(book_title)
if book != False:
print("Here's the book:")
print("Title:", book.get_title() + ".\nAuthor:",
book.get_author() + ".\nYear:",
str(book.get_year()) + ".\nBorrowed:",
str(book.get_borrowed()) + ".\n")


else:
print("This book does not exist.")

elif command == "borrow":
book_title = input("Type in the title of the book you want to borrow:")
book = my_lib.find_book(book_title)
if book != False and book.get_borrowed() == None:
pass

elif book == False:
print("This book does not exist in our catalog!")
else:
print("This book is already borrowed!")

我的问题是,当我添加多本具有相同标题、作者和年份的书籍时,我只能借其中一本。可能是一个简单的解决方案,但我被困住了。我还想使用另一个名为 User 的类,我可以在其中存储所有人员的姓名,而不仅仅是在借用函数中执行以下操作:

    ##name = input("Please type in your name:")
##book.set_borrowed(name)

我现在已经通行证了。我还有另一门课,就是书。与所有正常的 getter 和 setter 一起使用。

澄清一下,这不起作用:

def add_book(self, book):
if book.get_title() not in self.books:
self.books.append(book)

This doesnt work. I can still add a book with the exact same info including title!

最佳答案

我认为你需要重新考虑你的计划。

如果您创建两本具有相同属性值的图书,客户将无法区分它们。

一种可能是为每本书添加一个唯一的 ID(使用 Book 类中随每本书增加的类变量)并使用此 ID 借书。另一种可能性是存储一种类型的书籍有多少本可用。您可以使用书籍类中的 int 计数器来实现这一点。如果添加了具有匹配属性的书籍,则增加它;如果计数器大于 0(= 书籍可用)并且调用“get”命令,则减少它。

这应该可以解决您的问题。

顺便说一句:setter 和 getter 不是 pythonic。在 python 中,您通常使用直接访问属性。如果您需要进一步处理(值检查等),您可以使用属性。

关于Python 3.4.3 - 具有相同信息的多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31313521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com