動的に生成されたクラスを代替クラスのファクトリとしてピクルしようとしています。次のようなもの:
import sys, pickle
class BC(object):
pass
C = type("NewClassName", (BC,), {})
pickle.dump(C, sys.stdout)
これにより、次のエラーが発生します。
pickle.PicklingError: Can't pickle <class '__main__.NewClassName'>: it's not found as __main__.NewClassName
動的に生成されたクラスのオブジェクトをピクルするために、__reduce__
メソッドを定義できますが、クラス定義に対してのみこれを達成する方法はありますか?
新しいクラスのファクトリとしてのみ必要なので、BC を直接使用したくありません。