pickled複雑なenumインスタンスをunpickleしようとすると、常にValueError:BLUEは有効なColorsではありません。Pythonで複雑な列挙型をpickleする方法
どのようにピックルしてアンピッキングする方法はありますか?
from pickle import loads, dumps
from enum import Enum
class ColorType(object):
def __init__(self, counter, name):
self.counter = counter
self.name = name
def __str__(self):
return self.name
class Colors(Enum):
GREEN = ColorType(1, 'GREEN')
BLUE = ColorType(2, 'BLUE')
color = Colors.BLUE
print(color is loads(dumps(color)))
私はPython 2.7を使用しています。
おそらくあなたは 'enum34'バックポートパッケージを使用していますか? –
そしてなぜあなたは 'ColorType'クラスを使用していますか? IIRC「Enum」は、別のクラスオブジェクトを使用せずに、追加のメソッドを直接含むより複雑な値型をサポートしています。例については、ドキュメンテーションを参照してください。 –
はい、私は 'enum34'をインストールしました。この例は実際の問題をはるかに複雑なものにするためのものです。 –