私はPythonクラス(link)についてこれを読んでいます。それは私が持っている問題であるようです。ここでPython 2.7でクラスとそのリストメンバーをコピーし、参照をコピーしないにはどうしたらいいですか?
は私のクラスや他のコードからの抜粋です:私はリストに何かをするBのメソッドを呼び出すとき
class s_board:
def __init__(self):
self.__board = [[n for n in range(1, 10)] for m in range(81)]
self.__solved = [False for m in range(81)]
def copy(self):
b = s_board()
b.__board = self.__board[:]
b.__solved = self.__solved[:]
return b
if __name__ == '__main__':
A = s_board()
B = A.copy()
B.do_some_operation_on_lists()
、Aのリストも同様に影響を受けているようです。
だから私の質問:
- は私が正しく、クラスやリストをコピーすることではないのですか?
- 別の問題はありますか?
- クラスの新しいコピーが得られるように修正するにはどうすればよいですか?代わりに
copy()
copy()
のdeepcopy()
を使用して
Mikeは 'copy'モジュールから' copy'を使用していません。彼は自分のクラスで自分の作成方法を使用しています。問題は、リストのリストのスライスコピーです。しかし、はい、「ディープコピー」が解決策です。 – Ben
@Benああ私の間違い。 –