Не так, как в модуле. Мне дают понять, что это ПРЕДПОЛАГАЕТСЯ, чтобы быть возможным, но способ, которым работает оператор enum_, предотвращает это.
Вы можете обойти это на стороне питона. Где-то (вероятно, в файле __init__.py) сделать что-то вроде этого:
import yourmodule
def isEnumType(o):
return isinstance(o, type) and issubclass(o,int) and not (o is int)
def _tuple2enum(enum, value):
enum = getattr(yourmodule, enum)
e = enum.values.get(value,None)
if e is None:
e = enum(value)
return e
def _registerEnumPicklers():
from copy_reg import constructor, pickle
def reduce_enum(e):
enum = type(e).__name__.split('.')[-1]
return ( _tuple2enum, ( enum, int(e) ) )
constructor( _tuple2enum)
for e in [ e for e in vars(yourmodule).itervalues() if isEnumType(e) ]:
pickle(e, reduce_enum)
_registerEnumPicklers()
Это заставит все мариноваться просто отлично.