Тут проблема не в Pickle.
Вы же дампите в одном python-модуле, а извлекаете в другом?
Pickle не сохраняет полностью класс, он, как бы создает ссылку на этот класс (поправьте, более разбирающиеся).
В итоге, когда Вы в другом модуле загружаете с помощью pickle класс, он пытается найти этот класс в самом модуле. Но в модуле его то нет. Can't get attribute.
Зачем Вы используете pickle, зачем вообще дампить класс? Если он нужен в другом модуле - сделайте импорт.
Pickle используют для загрузки и сохранения объектов, я имею в виду экземпляры классов, в питоне то всё - объекты.
Мне надо чтобы в классе сохранялась например информация о количестве созданных экземпляров. Т.е. например модуль с классом запустился, в процессе было создано 3 экземпляра. В следующий раз когда модуль запуститься нужно чтобы в классе было сохранено N = 3. Вполне возможно есть другой способ, я тут не особо опытен.
rudikov, Я так уже делал. Суть в чем из модуля test ипортируем в модуль script:
test.py
class Tester:
N = 0
__init__(self):
Tester.N = Testert.N + 1
script.py
from test import Tester
T = Tester
Если я его импортирую всегда импортируется версия класса с N=0. Я хотел сохранить класс в файл и в конце модуля script просто перезаписывается класс, т.е. сохраняется класс уже с N=1.
Вы несколько не поняли. Оставляйте все также, никаких удалений дампов и загрузок, но добавьте еще и импорт. Просто добавьте одну строку.
Это нужно, чтобы у Вас появилось описание класса во втором модуле.
Если же я Вас неправильно понял или способ не работает, то вижу лишь один самый простой способ.
1. Сделать дополнительную переменную, которую сохранять и загружать в/из файла.
2. Модуль импортировать
3. Затем сделать Tester.N = загруженной из файла переменной.