0
問題deepcopy()を使用してnewMegaNodeにmegaNodeの独立したコピーを作成できません。それを使った後でさえ、newMeganodeとmegaNodeは結合されているようです。私はこれで何か間違っているのですか?私が特にdeepcopy()を使ってコンテンツをnewMegaNodeにコピーしてnewListに追加したにもかかわらず、出力ではすべてがmegaNodaにバインドされます。deepCopyを使用してPythonで独立したオブジェクトを作成する
def newAlgo():
global nodeQueue
initalNode = AnswersAlgo();
scratchList = []
scratchList.append(initalNode)
newList = []
for node in nodeQueue:
for megaNode in scratchList:
if validation(node,megaNode):
newMegaNode = copy.deepcopy(megaNode) #Unable to create independent object
newList.append([node,newMegaNode])
for x,y in newList:
scratchList.append(y.addToList(x))
を見てみましょうユーザクラスのオブジェクトに対して 'deepcopy'を使うことで問題になる可能性があります。コンストラクタ( '__init__')には、クラス変数の設定や更新などの副作用があることが多いため、コンストラクタを呼び出さずに新しいオブジェクトを作成すると危険です。クラスはこれを避けるために '__decopy__'を実装できますが、ほとんど行いません。 – cdarke