У меня есть очень простой класс Library
, и я инициализирую его переданным в словаре (имя ключевой книги (строка), местоположение полки книги значений (int)) со значениями, уже введенными в Это. Код выглядит следующим образом:Python - Словарь в классе не функционирует должным образом
class Library(object):
def __init__(self, book_table):
self.book_table = book_table
def get_location(self, book_name):
if book_name in self.book_table: # ERROR RIGHT HERE
return self.book_table[book_name]
else:
return "Book Not Found"
libraries = []
libraries.append(Library({"Book1":2, "Book2":9}))
print Library(libraries[0]).get_location("Book1")
По некоторым причинам, я не могу получить доступ к данным из словаря от метода get_location, но я могу получить доступ к словарю данных в методе инициализации (и я уже тестировал представляют метод, и он работал там тоже). Это ошибка, я получаю:
Traceback (most recent call last):
File "C:/Users/Owner/Documents/Programming/PyCharm/Book_Locator/Book_Locator.py", line 13, in <module>
print Library(libraries[0]).get_location("Book1")
File "C:/Users/Owner/Documents/Programming/PyCharm/Book_Locator/Book_Locator.py", line 6, in get_location
book_name in self.book_table:
TypeError: argument of type 'Library' is not iterable
Я ожидал, что это распечатать место BOOK1, которая является 2.
Если процесс создания примера показывает, что проблема была, пожалуйста, нам любезно редактировать свой ответ, чтобы объяснить , –
Я не могу опубликовать ответ, пока вопрос все еще находится на удержании, но ваша последняя строка должна быть 'print libraries [0] .get_location (« Book1 »)'. В противном случае вы создаете новую библиотеку, передавая старую библиотеку в качестве 'book_table' dict. – FamousJameous
Спасибо! Я думал, что я «конвертирую» его в тип библиотеки, чтобы получить доступ к методам класса библиотеки, но я думаю, вам не нужно это делать. Как только этот вопрос уйдет, опубликуйте ответ, и я приму его. – itman1234