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格式返回給前端

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM