如何编写与莳萝所有类变量到磁盘?(How to write all class variables

2019-09-29 07:21发布

我想保存重启的目的一个连接对象在我写代码。 他们是相当复杂的,与包含在其中的类几层,包括使用类变量的类。 我需要这一切,当我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', b.x, b.y, b.z)

un_dill.py:

import dill
with open('basic', 'rb') as f:
    b = dill.load(f)
print('basic', b.x, b.y, b.z)

它正常工作时,它是从同一个文件(make_dill.py)都运行,但是当我尝试读取un_dill.py文件基本:

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

因此,出于某种原因没有捕捉到的类变量z是一个实例的初始化过程中进行分配。 但它确实捕获类变量x为正的类定义分配。

我缺少的是在这里吗? 我需要保存这些对象的完整状态。

在稀疏萝文档,它说

除了酸洗Python对象,莳萝提供保存在单个命令解释器会话的状态的能力。

但我无法弄清楚如何做到这一点。

文章来源: How to write all class variables to disk with dill?