使不可pickle的对象可拾取。

pickle-mixin的Python项目详细描述


PyPI-LicensePyPI-Version

使不可pickle的对象可拾取。

安装

您可以通过pip安装它

pip install pickle-mixin

运行测试

安装后,您可以对其进行测试

python -c "import pickle_mixin; pickle_mixin.test()"

只要你有pytest

用法

初始化pickle

假设您有一个对象不可pickle的类,或者 需要大量的磁盘空间或内存才能进行pickle操作。 PickleByInit类允许您通过对象pickle对象属性 初始化。请考虑以下类别:

classFoo(PickleByInit):def__init__(self,obj):super(Foo,self).__init__()self.obj=objclassBar(object):def__init__(self,filename):self.filename=filenamedef__getstate__(self):raisePicklingErrordefinit_dict(self):returndict(filename=self.filename)

尝试如下腌制

f=Foo(Bar('file.txt'))pickle.dumps(f)

将引发PicklingError。另一方面,下面的 工作:

f=Foo(Bar('file.txt'))f.set_signature_only_attr('obj')pickle.dumps(f)

f.obj属性的取消pickling过程通过对象发生 初始化,从init_dictas传递返回的字典 Bar.__init__的关键字参数。

< H3>带槽和不带槽的混合类< EH3>

pickling不保存通过__slots__定义的属性 以下情况:

classFoo(object):__slots__=['a']def__init__(self):self.a=4classBar(Foo):def__init__(self):pass

SlotPickleMixin修复了它:

classFooMixin(object):__slots__=['a']def__init__(self):self.a=4classBarMixin(FooMixin,SlotPickleMixin):def__init__(self):FooMixin.__init__(self)SlotPickleMixin.__init__(self)f=BarMixin()o=pickle.dumps(f)f=pickle.loads(o)asserthasattr(f,'a')

作者

许可证

这个项目是根据麻省理工学院的许可证授权的-参见 LICENSE有关详细信息的文件

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
具有x86javapath的x64机器上x86java上的java JNI未满足链接错误   java将Pixmap的一部分上传到GPU   图像Java位图RLE8格式   java Android studio谷歌广告崩溃应用程序   java如何创建包含未知数量对象的变量?   Java计算给定int数组的所有可能组合   java JDBC classnotfound异常   httpclient中的java将HttpEntity转换为字符串的最优雅/正确的方法是什么?   如何从Java程序运行nano?   java在安卓中调用自定义类/方法   调用方法和JOptionPane后,允许代码继续执行所需的java计时器或其他想法   关于侦听器的向量Java并发问题   线程池执行器Java线程池   java配置DTO上的Swagger javax验证约束   Java中用于按钮功能的swing操作命令   ServletOutputStream中的java设置状态代码   java打印输入数组的平均值