11.3. copy_reg —ピクルスサポート関数の登録—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/library/copy reg
移動先:案内検索

11.3。 copy_reg - 登録漬物サポート機能

ノート

copy_reg モジュールは、Python3でcopyregに名前が変更されました。 2to3 ツールは、ソースをPython 3に変換するときに、インポートを自動的に適応させます。


copy_reg モジュールは、特定のオブジェクトを選択するときに使用される関数を定義する方法を提供します。 picklecPickle 、および copy モジュールは、これらのオブジェクトをピクルス化/コピーするときにこれらの関数を使用します。 このモジュールは、クラスではないオブジェクトコンストラクターに関する構成情報を提供します。 このようなコンストラクターは、ファクトリ関数またはクラスインスタンスである可能性があります。

copy_reg.constructor(object)
object が有効なコンストラクターであることを宣言します。 オブジェクトが呼び出せない(したがってコンストラクターとして有効でない)場合、TypeErrorを発生させます。
copy_reg.pickle(type, function[, constructor])

関数をタイプタイプのオブジェクトの「削減」関数として使用する必要があることを宣言します。 type は「クラシック」クラスオブジェクトであってはなりません。 (クラシッククラスの処理は異なります。詳細については、 pickle モジュールのドキュメントを参照してください。) function は、2つまたは3つの要素を含む文字列またはタプルを返す必要があります。

オプションのコンストラクターパラメーターは、提供されている場合、呼び出し可能なオブジェクトであり、ピクルス時に関数によって返される引数のタプルで呼び出されたときにオブジェクトを再構築するために使用できます。 TypeErrorは、オブジェクトがクラスであるか、コンストラクターが呼び出されない場合に発生します。

関数およびコンストラクターに期待されるインターフェースの詳細については、 pickle モジュールを参照してください。

11.3.1。 例

以下の例では、pickle関数を登録する方法とその使用方法を示します。

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