pickle和cPickle:Python对象的序列化(下)

396 查看

承接上文 pickle和cPickle:Python对象的序列化(上)

重构对象的问题

当与你自己的类一起工作时,你必须保证类被腌渍出现在读取pickle的进程的命名空间中。只有该实例的数据而不是类定义被腌渍。类名被用于在反腌渍时,找到构造器(constructor)以创建新对象。以此——往一个文件写入一个类的实例为例:

在运行时,该脚本创建一个以在命令行指定的参数为名的文件:

一个在读取结果腌渍对象失败的简化尝试:

该版本失败的原因在于没有 SimpleObject 类可用: