Как написать все переменные класса на диск с укропом?

Я пытаюсь сохранить несколько объектов для целей перезапуска в коде, который я пишу. Они довольно сложны, и в них содержится несколько слоев классов, включая классы, которые используют переменные класса. Мне нужно, чтобы все это было восстановлено, когда я dill.load () его резервное копирование.

К сожалению, есть очень специфическая вещь, которую я делаю, что, похоже, не работает с укропом.

Я создал тестовый пример, который показывает проблему:

basic.py:

class Basic(object): x = 10 def __init__(self, initial=False): super(Basic, self).__init__() self.y = 4 Basic.z = 5 

make_dill.py:

 import dill from basic import Basic b = Basic() with open('basic', 'wb') as f: dill.dump(b, f) with open('basic', 'rb') as f: b = dill.load(f) print('basic', bx, by, bz) 

un_dill.py:

 import dill with open('basic', 'rb') as f: b = dill.load(f) print('basic', bx, by, bz) 

Он отлично работает, когда он запускается из одного файла (make_dill.py), но когда я пытаюсь прочитать файл basic в файле un_dill.py:

 AttributeError: 'Basic' object has no attribute 'z' 

Поэтому по какой-то причине он не захватывает переменную класса z, которая назначается при инициализации экземпляра. Однако он фиксирует переменную класса x, которая назначается прямо в определении класса.

Что мне здесь не хватает? Мне нужно сохранить полное состояние этих объектов.

В редкой документации укропа говорится:

В дополнение к травлению объектов python укроп предоставляет возможность сохранять состояние сеанса интерпретатора в одной команде.

но я не могу понять, как это сделать.

    Python - лучший язык программирования в мире.