2014-05-15 1 views
0

У меня есть домашнее задание для создания «библиотеки» с классом-покровителем и классом книг. Эта библиотека должна позволять людям проверять до 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 части, содержащее создание списка (в инициализации для класса книги) и где я пытался напечатать список, чтобы сделать проверку некоторых ошибок (в borrowMe метод), а также где я пытаюсь автоматически заимствовать книгу у первого лица в списке ожидания/очереди (в методе returnMe).

Любое понимание оценено.

ответ

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)) избыточен, вы можете распечатать список напрямую.