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
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント