python魔法方法__reduce__()的妙用
2023-09-14 08:59:07 时间
一、__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] #返回的是(<class '__main__.ServerError'>, ('错误信息',)),所以切片取1 def 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格式返回给前端
相关文章
- python安装numpy后pycharm导入不了_python的numpy库
- python skitlearn_Python sklearn
- python中创建列表的方法_python中readlines
- Python对象的2个内置方法__del__和__str__
- 使用Python激活成功教程通达信股票数据[通俗易懂]
- python数据分析-时间序列(二)ARIMA、傅里叶、小波变换、Prophet方法2021.8.10
- 【说站】python try-except捕获异常的方法
- 【说站】Python字符串方法如何使用
- 【说站】python赋值和交换的方法
- 【说站】python定义类的初始化方法
- linux收发邮件_python邮件发送
- python定义函数求和_Python定义函数实现累计求和操作
- Python人工智能:基于sklearn的随机森林分类算法实现方法
- Python面向对象编程-类和对象__init__和__del__方法
- Python面向对象编程-魔术方法-__len__和__getitem__方法
- Python面向对象编程-魔术方法-__call__和__getattr__方法
- Python __slots__:限制类实例动态添加属性和方法
- Python __call__()方法(详解版)
- python中os模块的常用方法详解编程语言
- python 写接口供外部调用详解编程语言
- python Tesseract安装方法详解编程语言
- Linux查看Python版本的有效方法(linux查看python版本)
- Linux查看Python安装路径的方法(linux查看python安装路径)
- Python__getattr__与__setattr__使用方法
- 盘点提高Python代码效率的方法
- Python中replace方法实例分析
- Python发送Email方法实例