博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python魔法方法__reduce__()的妙用
阅读量:5332 次
发布时间:2019-06-15

本文共 774 字,大约阅读时间需要 2 分钟。

一、__reduce__()介绍

当定义扩展类型时(也就是使用Python的C语言API实现的类型),如果你想pickle它们,你必须告诉Python如何pickle它们。 __reduce__ 被定义之后,当对象被Pickle时就会被调用。它要么返回一个代表全局名称的字符串,Pyhton会查找它并pickle,要么返回一个元组。这个元组包含2到5个元素,其中包括:一个可调用的对象,用于重建对象时调用;一个参数元素,供那个可调用对象使用;被传递给 __setstate__ 的状态(可选);一个产生被pickle的列表元素的迭代器(可选);一个产生被pickle的字典元素的迭代器(可选)

二、使用案例

class ServerError(UserWarning):    # UserWarning用户代码生成的警告    def error(self):        # C语言接口,可将错误信息pickle成字符串        return self.__reduce__()[1]#返回的是(
, ('错误信息',)),所以切片取1def instance_name(name): try: if not isinstance(name,str): raise ServerError("名字必须是字符串") except ServerError as e: error=e.error()[0] print(error)instance_name(123)#作用是:可以将自定义的错误信息,组成json格式返回给前端

 

转载于:https://www.cnblogs.com/angelyan/p/11079267.html

你可能感兴趣的文章
【转载】Visual Studio + VA 常用快捷键
查看>>
Android SDK Manager国内无法更新的解决方案
查看>>
20145303刘俊谦 Exp8 Web基础
查看>>
吴裕雄 Bootstrap 前端框架开发——Bootstrap 图片:响应式图片
查看>>
吴裕雄--天生自然 JAVA开发学习:Number & Math 类
查看>>
cf 558c Amr and Chemistry
查看>>
结对review
查看>>
java基本类型(内置类型)取值范围
查看>>
CAD&CG GDC 2018大会论文录用名单
查看>>
Mac 中文输入法失效(不显示选词框)解决办法
查看>>
基于 Laravel 开发博客应用系列 —— 设置 Linux/Mac 本地开发环境
查看>>
C语言基础-第五章
查看>>
CSS的一些命名
查看>>
[LeetCode]Valid Sudoku
查看>>
[leetcode]110BalancedBinaryTree平衡二叉树
查看>>
SQL中INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN区别
查看>>
学计算机的你伤不起啊
查看>>
Django+MongoDB批量插入数据
查看>>
GPS坐标换算为百度坐标
查看>>
Linux命令整理-Ubuntu
查看>>