@V-ampre

Почему не извлекается класс из файла?

Есть некий класс Tester, сохраняю его в файл с помощью модуля pickle:

with open('class_file', 'wb') as f:
    pickle.dump(Tester, f)


Все вроде работает, файл создается. Потом загружаю его обратно:
with open('class_file', 'rb') as f:
    Tester = pickle.load(f)


На этом месте выдает ошибку:
AttributeError: Can't get attribute 'Tester' on <module '__main__' from '/home/Vampire91/mysite/load_class.py'>
  • Вопрос задан
  • 653 просмотра
Пригласить эксперта
Ответы на вопрос 1
@rudikov
Тут проблема не в Pickle.
Вы же дампите в одном python-модуле, а извлекаете в другом?
Pickle не сохраняет полностью класс, он, как бы создает ссылку на этот класс (поправьте, более разбирающиеся).
В итоге, когда Вы в другом модуле загружаете с помощью pickle класс, он пытается найти этот класс в самом модуле. Но в модуле его то нет. Can't get attribute.
Зачем Вы используете pickle, зачем вообще дампить класс? Если он нужен в другом модуле - сделайте импорт.
Pickle используют для загрузки и сохранения объектов, я имею в виду экземпляры классов, в питоне то всё - объекты.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы