3

小さなスクリプトを機能させようとしていますが、何が問題なのかわかりません。

dict varテストを返さなくても、メソッドの 1 つがテストを変更します。つまり、それをローカルで処理し、値を返さないようにしたいのです。これは私の実際のコードではありませんが、代表的なものであることは間違いありません。

>>> class check:
...   def pathgen(self,test):
...     test['a']=0
...     print test
...   def assign(self):
...     test={'a':1}
...     self.pathgen(test)
...     print test #WILL PRINT 0
... 
>>> a=check()
>>> a.assign()
{'a': 0}
{'a': 0}
4

1 に答える 1

3

オブジェクトへの変更を、それを変更する関数に対してローカルにする場合は、オブジェクトをコピーする必要があります。次の呼び出し時に辞書をコピーできます。

self.pathgen(dict(test))

または呼び出し先内でコピーします。

def pathgen(self, test):
    test = dict(test)
    ...
于 2013-03-13T18:46:17.697 に答える