我试图让我的小脚本工作,但我不知道问题是什么,其中一个方法会修改我的测试变量,即使我不返回它,我的意思是,我想在本地工作,而不是返回值。这不是我的实际代码,但你可以确定它代表。你知道吗
更新:我正在使用dict
>>> 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}
在您的代码中,“pathgen”将修改其第一个参数所指向的任何内容。 为了避免在对“test”进行任何更改之前复制它
有关复制的详细信息:http://docs.python.org/2/library/copy.html
你的假设是错误的。实际上,
WILL PRINT 0
行将打印1
。你知道吗请注意,如果
test
是一个列表,而pathgen
要修改它(例如,通过附加一个元素),情况会有所不同:实际上,这会打印
[1]
两次。你知道吗这可以通过在
pathgen
中复制test
来解决:您正在使用函数本地名称。在实例上设置属性(通过
self
)以在方法之间共享信息:相关问题 更多 >
编程相关推荐