[英]Creating a list of class instances
我正在尝试将一个简单的库系统作为Python中OOP介绍的一部分。 我试图将书籍装入我的图书馆课程时陷入困境。 我做了第一个简单的课程,名为Book,它可以制作书籍,可以显示他们的身份证,姓名和价格等。
现在我试图创建名为Library的实际类。 我想列出图书馆里所有书籍的ID,费用和名称。 在这里我遇到了一个isseu。 我不知道如何将类Book的实例添加到我在Library中创建的列表中,我的代码可以在这里找到。
class Library(object):
def __init__(self, book):
self.book = book
def add_item(self, book):
mylist.append(book)
return mylist
if __name__ == '__main__':
booklist = []
Book1 = Book(1, 'Bookname1', "$30")
Book2 = Book(2, 'Bookname2', "$10")
Book1.show()
Book1.get_attribute_string()
和书籍的代码,我宁愿保持不变。 当然我对这些建议持开放态度,但我并不是非常精通Python中的OOP,所以不建议事情变得复杂! 谢谢。
class Book(object):
def __init__(self, ID, name, price):
self.ID = ID
self.name = name
self.price = price
def show(self):
print(self.ID, self.name, self.price)
def get_attribute_string(self):
print(str(self.ID) + '_' + str(self.name) + '_' + str(self.price))
def get_id(self):
print(self.ID)
def get_name(self):
print(self.name)
def get_price(self):
print(self.price)
您的图书馆类应该包含一系列图书(或更具体的图书,取决于您的任务的详细信息)。 这是一个例子:
class Library(object):
def __init__(self, book):
# collection of library books. This is the library state
self.books = tuple()
def add_item(self, book):
# add an item to the collection
self.books += (book, )
return self.books
我更喜欢使用不可变集合,以便其他人不能更改类外的库状态。 但是你可以使用一个列表。 你必须要小心。
Library
需要一个属性,例如books
。 在此列表中,存储了所有书籍。 您需要在__init__
方法中定义它,这样您就可以拥有多个具有不同书籍的库。
class Library:
def __init__():
self.books = []
def add_book(book):
self.books.append(book)
def get_books(self):
return self.books
def show_books(self):
# This is one possible example how you can print all books
for book in self.books:
print(str(book))
class Book:
pass # Your Book code
def __str__(self):
return f"{self.name}, {self.id}, {self.price}"
# Returns a string with all attributes of the string.
# Note that is a f-string, but you can use any string
# This function is called, when you call str(book1)
if __name__ == "__main__":
book1 = Book()
book2 = Book()
lib = Library()
lib.add_book(book1)
lib.add_book(book2)
lib.show_books()
all_books = lib.get_books()
also_all_books = lib.books
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.