【发布时间】:2021-01-28 15:36:08
【问题描述】:
如果我理解正确,pickle 将对象的状态转换为类似于dict 的东西,包括对象的类,然后将该数据写入二进制文件。获取对象的状态是通过complex interface 完成的,最简单的情况是访问对象的__dict__,但可能涉及到用户定义的方法,如__getstate__、__setstate__ 等。当一个 pickle 文件被加载时,二进制数据被读入类似dict 的表示,然后这些转换回对象。
我的问题: 是否有可能在获取对象状态之后但在写入二进制数据之前的点上挂钩pickle,并且在另一个方向上也是如此(在读取二进制数据之后但在恢复对象之前)?
背景:我正在考虑实现类似于jsonpickle 和hickle 的东西,即具有dump 和load 相同的接口,但使用另一种文件格式来存储数据(这里:JSON & HDF5 )。如果可能的话,我想避免重复 pickle 在访问和恢复对象状态时的长度,而是重用该部分,并且只创建一个新的“后端”。
使用dill 的解决方案同样好。
【问题讨论】: