クラスを定義するスクリプトがある場合:
script = """
class myClass:
def __init__(self):
self.name = 'apple'
self.color = 'green'
"""
次に、このスクリプトを独自の名前空間 dict で実行します。
NS = {}
exec script in NS
次に、クラスのインスタンスを作成してピクルします。
a = NS['myClass']()
import pickle
save = pickle.dumps(a)
今、それを解凍しようとすると:
load = pickle.loads(save)
エラーが発生します
AttributeError: 'module' object has no attribute 'myClass'
オブジェクトを再構築するために myClass を見つける場所を python が知らないため、これは機能しないと思います。しかし、 myClass は NS dict に存在します。pickle がロードしているオブジェクトのクラスを見つける場所を pickle に伝える方法はありますか?