copyreg --- Đăng ký chức năng hỗ trợ pickle

Source code: Lib/copyreg.py


Mô-đun copyreg cung cấp cách xác định các chức năng được sử dụng trong khi chọn các đối tượng cụ thể. Các mô-đun picklecopy sử dụng các chức năng đó khi chọn/sao chép các đối tượng đó. Mô-đun này cung cấp thông tin cấu hình về các hàm tạo đối tượng không phải là lớp. Các hàm tạo như vậy có thể là các hàm xuất xưởng hoặc các thể hiện của lớp.

copyreg.constructor(object)

Khai báo object là một hàm tạo hợp lệ. Nếu object không thể gọi được (và do đó không hợp lệ với tư cách là hàm tạo), hãy tăng TypeError.

copyreg.pickle(type, function, constructor_ob=None)

Tuyên bố rằng function nên được sử dụng làm chức năng "rút gọn" cho các đối tượng thuộc loại type. function phải trả về một chuỗi hoặc một bộ chứa từ hai đến sáu phần tử. Xem dispatch_table để biết thêm chi tiết về giao diện của function.

Tham số constructor_ob là một tính năng cũ và hiện bị bỏ qua, nhưng nếu được thông qua thì nó phải là một tính năng có thể gọi được.

Lưu ý rằng thuộc tính dispatch_table của đối tượng pickler hoặc lớp con của pickle.Pickler cũng có thể được sử dụng để khai báo các hàm rút gọn.

Ví dụ

Ví dụ dưới đây muốn chỉ ra cách đăng ký một hàm dưa và cách sử dụng nó:

>>> import copyreg, copy, pickle
>>> class C:
...     def __init__(self, a):
...         self.a = a
...
>>> def pickle_c(c):
...     print("pickling a C instance...")
...     return C, (c.a,)
...
>>> copyreg.pickle(C, pickle_c)
>>> c = C(1)
>>> d = copy.copy(c)
pickling a C instance...
>>> p = pickle.dumps(c)
pickling a C instance...