課題として、私は 2 つのクラスを作成しようとしています。1 つのクラス はBook
、本がチェックアウトされているかどうかを確認し、本のタイトル、著者、およびページ番号 (これらは入力変数です) を返します。Library
、タイトルと著者のペアを辞書に追加し、特定の本がチェックアウトされているかどうかを確認します。実行しようとするたびにエラーメッセージが表示されます。この奇妙なエラーを修正するにはどうすればよいですか?
これが私のコードです:
class Book:
def __init__(self, title, author, pages):
self.title = title
self.author = author
self.pages = pages
self.checkedOut = False
def checked_Out(self):
print(self.checkedOut)
return self.checkedOut
def change_value_of_checkedOut(self):
if self.checkedOut == False:
self.checkedOut = True
print("Switched from False to True.")
elif self.checkedOut == True:
self.checkedOut = False
print("Switched from True to False.")
def return_pages(self):
print(self.pages)
return self.pages
def return_title(self):
print(self.title)
return self.title
class Library:
def __init__(self):
collection = {}
def addExistingBook(self, book):
collection[book.title] = book.author
def addNewBook(self, title, author, pages):
new_book = Book(title, author, pages)
collection[title] = new_book.author
def change_checked_out_status(self, title):
if title in collection.keys():
title.change_value_of_checkedOut()
else:
print("This book is not in the collection.")
def main():
title = str(input("Enter the title of the book. "))
author = str(input("Enter the author of the book. "))
pages = int(input("Enter the number of pages in the book. "))
myBook = Book(title, author, pages)
myLib = Library()
myLib.addExistingBook(myBook)
main()
実行しようとすると、次のようになります。
Enter the title of the book. The Count of Monte Cristo
Enter the author of the book. Alexandre Dumas
Enter the number of pages in the book. 1250
Traceback (most recent call last):
File "C:/Python33/Class Programs/book_library_classes.py", line 56, in <module>
main()
File "C:/Python33/Class Programs/book_library_classes.py", line 54, in main
myLib.addExistingBook(myBook)
File "C:/Python33/Class Programs/book_library_classes.py", line 36, in addExistingBook
collection[book.title] = book.author
NameError: global name 'collection' is not defined