2021-08-06に投稿

Python 標準ライブラリ copyreg pickleの定義

copyregライブラリを使うとpickleの直列化を特定のクラスについてカスタマイズできる。

概要

ライブラリのインポートとサンプルのクラスを定義する。

import copyreg
import pickle

class SampleClass:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def show(self):
        print(self.name, self.age)

直列化で使用する関数は、第1引数にクラス、
第2引数にコンストラクタの引数をタプルで指定。

def pickle_function(sc):
    print("pickle_function")
    print(sc.name ,sc.age)
    return SampleClass, (sc.name + "test" ,sc.age)

使用例は以下のようになる。

copyreg.pickle(SampleClass, pickle_function)

sc = SampleClass('Taro', 60)
p = pickle.dumps(sc) # => pickle_function Taro 60

loads_sc = pickle.loads(p)
loads_sc.show() # => Tarotest 60

参考

copyreg --- pickle サポート関数を登録する

Originally published at marusankakusikaku.jp
ツイッターでシェア
みんなに共有、忘れないようにメモ

maru3kaku4kaku

Pythonこつこつ学習中。よく忘れる。

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント