test_list[1].group.append(test_list[0].name)出错

2014-03-30 19:11:34 +08:00
 magine
代码如下

class test:
group = []
def __init__(self,name):
self.name = str(name)



test0 = test(0)
test1 = test(1)

test_list = [test0,test1]
test_list[0].group.append(test_list[1].name)
#此时print test0.group 是['1'],这是把test1.name存入test0.group中。
test_list[1].group.append(test_list[0].name)
#但是在执行了上一句之后print test0.group 却变成了['1','0']
#我在上一句中为什么会改变test0的值?
#顺便一提这时print test1.group 会变成['1','0'],而不是预计的['0']
2437 次点击
所在节点    Python
4 条回复
magine
2014-03-30 19:12:31 +08:00
天哪……缩进全没了……大神们凑合着看吧QAQ
bcxx
2014-03-30 19:37:56 +08:00
group 是 test 这个类的属性,test0 test1 引用的都是同一个 group
sorcerer
2014-03-30 19:43:57 +08:00
虽然我是Python初学者,但也看出你的group是个类变量,当你访问实例变量时,如果实例没有那个属性,就返回类变量的值,所以你操作的都是类变量。最后类名首字母请用大写。
magine
2014-03-30 20:04:11 +08:00
@bcxx
多谢了,燃眉之急啊QAQ。是我基础知识不扎实……
@sorcerer
我猜是初学者啊,泪……
啊抱歉,调试程序的时候卡在这里了,急着构造一个样例,疏忽风格了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/106533

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX