zoukankan      html  css  js  c++  java
  • python魔法方法__reduce__()的妙用

    一、__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格式返回给前端
  • 相关阅读:
    ngxin常用配置--作为web服务端
    百度学习笔记---查询数据库
    python开发
    C 语言学习——递归
    C 语言学习——强制类型转换
    C 语言学习——头文件
    C 语言学习——printf()输出格式
    一个简单的python web应用部署 nginx + uwsgi
    C 语言学习——字符串
    C 语言学习——指针
  • 原文地址:https://www.cnblogs.com/angelyan/p/11079267.html
Copyright © 2011-2022 走看看