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

Я пытаюсь сохранить несколько объектов для целей перезапуска в коде, который я пишу. Они довольно сложны, и в них содержится несколько слоев классов, включая классы, которые используют переменные класса. Мне нужно, чтобы все это было восстановлено, когда я 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 укроп предоставляет возможность сохранять состояние сеанса интерпретатора в одной команде.

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

     
    Interesting Posts for Van-Lav

    Matplotlib: как заставить imshow читать x, y координаты из других массивов numpy?

    Как распечатать строку «\ b» в Python

    Улучшение линейных операций ввода-вывода в D

    Таблица Django с миллионом строк

    Есть ли альтернатива python для библиотеки видеомагнитофона Ruby?

    Изменение подкласса «ndarray» на месте

    Скребок Python – Невозможно получить требуемые данные от Flipkart

    Механизм Google-приложений не может создавать очереди задач больше, чем экземпляры back end, определенные в backends.yaml в приложении Google.

    В программе Python, почему я не могу написать файл сразу после его написания?

    Невозможно преобразовать выражение в float

    Эквивалент преобразования в R / ddply в Python / pandas?

    «RuntimeError: убедитесь, что исполняемые файлы Graphviz находятся на пути вашей системы» после установки Graphviz 2.38

    Как получить стабильные результаты с помощью TensorFlow, установив случайное семя

    Разбор ответов JSON

    DeadlineExceededErrors с обновляемым токеном доступа GAE / Google API

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