13

フリーズしたデータクラスのインスタンスをピクルするにはどうすればよい__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__ます。これは単なるバグですか?

4

3 に答える 3