如何允许我的自定义对象被腌制?

问题描述

我在 C 中创建了一个位序列自定义类型

typedef struct {
    PyObject_VAR_HEAD
    uint8_t data[1];
} BitStream;

static PyTypeObject BitStreamType = {
    PyVarObject_HEAD_INIT(NULL,0)
    .tp_name = "my_module.BitStream",.tp_dealloc = 0,.tp_free = PyObject_Del,.tp_basicsize = offsetof(BitStream,data),.tp_itemsize = sizeof(uint8_t),.tp_flags = Py_TPFLAGS_DEFAULT,};

我试过对我的一些模块函数的结果进行酸洗

with open(path,"wb") as outfile:
    pickle.dump(myobject,outfile)

但得到错误

TypeError: cannot pickle 'my_module.BitStream' object

环顾四周,我发现可以为其自定义类定义 .__reduce__() 以让 pickle 腌制它们。

我的问题是,我更喜欢直接存储我的自定义类。我不想使用 Python 类型来表示它(这似乎是 .__reduce__() 需要返回的)

我该怎么做才能仍然允许通过pickle将其保存到二进制文件中并从二进制文件中加载?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)