AttributeError: 'Dict' object has no attribute 'book'
Я читал статьи про ООП и эту проблему, но не понял как её решить
import pickle
# Надо сделать так чтобы список сохранялся, а не каждый раз был новым
# Класс содержащий список с именами и данными
class Dict():
def __init__(self, book):
self.book = {}
def InputInfo(self):
self.book = {} # создаем список
print(self.book)
name = input("Введи имя человека:")
# Просим пользователя ввести данные
info = input(("Напишите информацию о человеке:"))
self.book[name] = info # добавляем данные в список
print(self.book)
def Del(self):
delname = input("Введите имя того кого хотите удалить:")
pop_item = self.book.pop(delname) # удаляет данные об имени что ввел пользователь
print(self.book)
def Save(self):
# Имя файла в котором мы сохраним объект
adfile = 'book.data'
# Запись в файл
f = open(adfile, 'wb')
pickle.dump(self.book, f) # помещаем объект в файл
f.close()
del self.book # удаляем словарь
# Считываем из хранилища
f = open(adfile, 'rb')
savedict = pickle.load(f) # загружаем объект из файла
print(savedict)
# Реализация
print("Хочешь завести адресную книгу? \n1-ДА, 2-НЕТ")
answ = int(input())
if answ == 1:
d = Dict({})
d.InputInfo()
else:
print("Как хочешь")
d = Dict({})
d.Save()
print("Добавьте еще одного человека")
d.Save()
Ошибка:
Traceback (most recent call last): File "C:\Python\AddressBookCopy2.py", line 65, in <module> d.Save() File "C:\Python\AddressBookCopy2.py", line 38, in Save pickle.dump(self.book, f) # помещаем объект в файл AttributeError: 'Dict' object has no attribute 'book'
Ответы (1 шт):
Автор решения: n1tr0xs
→ Ссылка
Ошибку выдает потому что после вызова метода Save у класса действительно нет атрибута book - вы его удаляете в указанной ранее функции del self.book # удаляем словарь . А вы пытаетесь еще раз "сохранить" ваш класс.