フリーズしたデータクラスのインスタンスをピクルするにはどうすればよい__slots__
ですか? たとえば、次のコードは Python 3.7.0 で例外を発生させます。
import pickle
from dataclasses import dataclass
@dataclass(frozen=True)
class A:
__slots__ = ('a',)
a: int
b = pickle.dumps(A(5))
pickle.loads(b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 3, in __setattr__
dataclasses.FrozenInstanceError: cannot assign to field 'a'
frozen
またはのいずれかを削除すると、これは機能し__slots__
ます。これは単なるバグですか?