【问题标题】:Creating a list within an object (book/patron waitlist)在对象中创建列表(书籍/顾客候补名单)
【发布时间】:2014-05-15 03:53:29
【问题描述】:

我有一个家庭作业,要创建一个包含赞助人课程和图书课程的“图书馆”。这个图书馆应该允许人们借出最多 3 本书,如果该书已经借出,则将一本书添加到顾客的候补名单中。书籍归还后,应自动将其签出给候补名单上的第一个人。我似乎无法让列表工作。这是我的代码:

class Patron(object):
def __init__(self,name,booksOut=0):
    self._name=name
    self._booksOut=booksOut

def getBooksOut(self):
    return self._booksOut

def __str__(self):
    result="Name: "+self._name+"\n"
    result+="Books Out: "+str(self._booksOut)+"\n"
    return result


class Book(object):
def __init__(self,title,author,owner=None):
    self._title=title
    self._author=author
    self._owner=owner
    self._queue=[] #Here is the empty list I'm using... but it doesn't seem to be working.

def setOwner(self,owner):
    self._owner=owner

def getOwner(self):
    return self._owner

def borrowMe(self, patron):
    if self._owner != None:
        return "This book is not available. You've been added to the queue.\n"
        self._queue.append(patron)
        print(str(self._queue)) #I can't even get the list to print, so I'm feeling like I didn't create it correctly
    else:
        if patron.getBooksOut()>=3:
            return "You have too many books checked out!"
        else:
            self.setOwner(patron)
            patron._booksOut+=1
            return "You have successfully checked this book out."

def returnMe(self):
    if len(self._queue)==0:
        self.setOwner(None)
        return "Your book has been returned."
    else:
        return "Your book has been given to: "+str(self._queue[0])
        self.borrowMe(self._queue[0]) #Here is where I'm trying to automatically borrow the book to the first person in the waitlist

def __str__(self):
    result="Title: "+self._title+"\n"
    result+="Author: "+self._author+"\n"
    if self._owner != None:
        result+="Owner: "+str(self.getOwner())
    else:
        result+="Owner: None"
    return result


def main():
"""Tests the Patron and Book classes."""
p1 = Patron("Ken")
p2 = Patron("Martin")
b1 = Book("Atonement", "McEwan")
b2 = Book("The March", "Doctorow")
b3 = Book("Beach Music", "Conroy")
b4 = Book("Thirteen Moons", "Frazier")
print(b1.borrowMe(p1))
print(b2.borrowMe(p1))
print(b3.borrowMe(p1))
print(b1.borrowMe(p2))
print(b4.borrowMe(p1))
print(p1)
print(b1)
print(b4)
print(b1.returnMe())
print(b2.returnMe())
print(b1)
print(b2)

我已经 #commented 包含列表创建的部分(在 book 类的 init 中)以及我尝试打印列表以进行一些错误检查的部分(在 borrowMe 方法中)和也是我试图自动将书借给等候名单/队列中的第一个人的地方(在 returnMe 方法中)。

感谢任何见解。

【问题讨论】:

    标签: python list methods instantiation


    【解决方案1】:
    if self._owner != None:
            return "This book is not available. You've been added to the queue.\n"
            self._queue.append(patron)
            print(str(self._queue))
    

    您在return 之后打印。在return 之后不会执行任何操作。将其更改为print。同样在Patron 类中,将__str__ 更改为__repr__。否则它将打印内存地址列表。另外print(str(self._queue))是多余的,可以直接打印列表。

    【讨论】:

      猜你喜欢
      • 2021-09-30
      • 2014-10-22
      • 1970-01-01
      • 1970-01-01
      • 2017-12-20
      • 2021-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多