3

私は自分のpythonスキルに取り組んでおり、いくつかのクラスを作成しようとしています。Pythonは参照ベースであるため、クラスメソッドによって返されるリストは呼び出し元が変更でき、クラスに反映されます(私が持っているように)。これを回避する正しい方法は何でしょうか? ネストされたリストをネストされたタプルに変換するか、ディープコピーを行うことを考えていましたか?

4

1 に答える 1

2

タプルを返すことは、不変リストを返すかなり標準的な方法です。別のオプションは、リストの不変の「ビュー」を返すことです。現在、標準ライブラリにそのようなクラスが含まれているとは思わないので、おそらく独自のクラスを作成する必要がありますが、それはかなり簡単です。基本的に、クラスには単一のプライベート インスタンス変数 (基になるリスト) が含まれます。__getitem__読み取り操作 ( 、__len__など)のみを実装し、それらをインスタンス変数に委譲します (必要に応じて、子項目を「ビュー」オブジェクトにラップします)。

于 2012-12-13T14:57:56.613 に答える