Python での不変オブジェクトの実装
Python で不変オブジェクトを作成すると、課題が生じる場合があります。一般的な解決策の 1 つは、提供されたコード スニペットに示されているように、タプルをサブクラス化することです。ただし、このアプローチには、インデックスを介して属性にアクセスするという欠点があります。
純粋な Python ソリューション
回答で提案されているエレガントなソリューションは、Python の collections.namedtuple タイプを利用することです。この型はタプルのサブクラス アプローチと同様に動作しますが、追加の利点があります。
namedtuple を使用して不変オブジェクトを作成するには:
<code class="python">Immutable = collections.namedtuple("Immutable", ["a", "b"])</code>
インデックス付き属性へのアクセスのアドレス指定
namedtuple は __setattr__ による属性変更の問題を解決しますが、[0] や [1] などのインデックスを介して属性にアクセスすることは可能です。この制限は、これらの間接メソッドへの依存を回避するようにコードを慎重に構造化することで軽減できます。
C 拡張機能を使用した代替アプローチ
より複雑な実装が必要な場合
以上が## Python オブジェクトで真の不変性を実現する方法: アプローチの比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。