発生条件は以下。
- @dataclassの付いたclassのオブジェクトを==で比較する
- そのclassのインスタンス変数にnumpy.ndarrayがある
原因は以下。
@dataclassで自動生成されるeqメソッドは、そのクラスのフィールドからなるタプルを比較する
参考: docs.python.org
ndarray同士の比較結果は、各要素毎の比較結果を格納したndarrayになることがある。
なのでタプルの要素の一つにnumpy.ndarrayがあると、ndarray同士の比較の結果、ndarrayが生成され、結果がboolでないのでエラーになる。
今回は値が同じかでなく、オブジェクトが同じかを確認したかったのでid(obj)でオブジェクトのIDを取得して比較するよう修正した。
参考: