python魔法方法 reduce

2022-05-29 03:48:11 字數 781 閱讀 9433

當定義擴充套件型別時(也就是使用python的c語言api實現的型別),如果你想pickle它們,你必須告訴python如何pickle它們。 __reduce__ 被定義之後,當物件被pickle時就會被呼叫。它要麼返回乙個代表全域性名稱的字串,pyhton會查詢它並pickle,要麼返回乙個元組。這個元組包含2到5個元素,其中包括:乙個可呼叫的物件,用於重建物件時呼叫;乙個引數元素,供那個可呼叫物件使用;被傳遞給 __setstate__ 的狀態(可選);乙個產生被pickle的列表元素的迭代器(可選);乙個產生被pickle的字典元素的迭代器(可選)

class

servererror(userwarning):

#userwarning使用者**生成的警告

deferror(self):

#c語言介面,可將錯誤資訊pickle成字串

return self.__reduce__()[1]

#返回的是(, ('錯誤資訊',)),所以切片取1

definstance_name(name):

try:

ifnot

isinstance(name,str):

raise servererror("

名字必須是字串")

except

servererror as e:

error=e.error()[0]

print

(error)

instance_name(123)

#作用是:可以將自定義的錯誤資訊,組成json格式返回給前端

Python魔法方法 基本的魔法方法

new cls 1.new 是在乙個物件例項化時候所呼叫的第乙個方法 2.他的第乙個引數是這個類,其他的引數是用來直接傳遞給 init 方法 3.new 決定是否使用該 init 方法,因為.new 可以直接呼叫其他類的構造方法,或者返回別的例項物件來作為本類的例項,如果 new 沒有返回例項物件,...

python 魔法方法

魔法方法具有一定的特徵 new cls class capstr str def new cls,string 修改新類裡的new方法,需傳入乙個引數 string string.upper return str.new cls,string 用父類裡的new方法進行返回,直接飯後構造後的物件def...

python魔法方法

python魔術方法是特殊方法的暱稱。它是簡單而又強大,為了被python直譯器呼叫而存在的方法。python提供豐富的元物件協議,讓語言的使用者和核心開發者擁有並使用同樣的工具 例子引用 流暢的python 一摞python風格的紙牌 import collections namedtuple用來...