📜  copyreg — 注册 pickle 支持函数

📅  最后修改于: 2022-05-13 01:55:41.785000             🧑  作者: Mango

copyreg — 注册 pickle 支持函数

copyreg 模块定义了在酸洗或复制时通过酸洗特定对象使用的函数。该模块提供有关不是类的对象构造函数(可能是工厂函数或类实例)的配置信息。

copyreg.constructor(对象)
此函数用于将对象声明为有效的构造函数。如果对象不可调用,则该对象不被视为有效的构造函数。如果对象不可调用,则此函数引发 TypeError。

copyreg.pickle(类型,函数,构造函数=无)
这用于将函数声明为类型类型对象的“归约”函数。函数应返回包含两个或三个元素的字符串或元组。
构造函数参数是可选的。它是一个可调用对象,可用于在酸洗时使用函数返回的参数元组调用时重建对象。如果 object 是类或构造函数不可调用,则会引发 TypeError。

例子 :

# Python 3 program to illustrate 
# use of copyreg module 
import copyreg, copy, pickle 
  
class B(object): 
    def __init__(self, a): 
        self.a = a 
  
def pickle_b(b): 
    print("pickling a C instance...") 
    return C, (b.a, ) 
  
copyreg.pickle(B, pickle_b) 
b = B(1) 
d = copy.copy(b) 
print (d) 
  
r = pickle.dumps(b) 
print (r) 

输出 :

pickling a C instance...

pickling a C instance...
b'\x80\x03c__main__\nC\nq\x00K\x01\x85q\x01Rq\x02.'