私はPythonオブジェクトを「どの深さでも不変」であると定義しています
- それは(名目上)不変です。と
- 「コンテナ」オブジェクトの場合、「どの深さでも不変」なオブジェクトのみが含まれます。
たとえば((1, 2), (3, 4))
、任意の深さで不変ですが、((1, 2), [3, 4])
そうではありません (後者は、タプルであるため、「名目上」不変ですが)。
Python オブジェクトが「どの深さでも不変」かどうかをテストする合理的な方法はありますか?
最初の条件 (例えば、collections.Hashable
クラスを使用し、不適切に実装されたメソッドの可能性を無視する__hash__
) をテストするのは比較的簡単ですが、2 番目の条件をテストするのはより困難です。 「コンテンツ」を繰り返し処理しています...
ありがとう!