我发现一个问题,不能够理解差异的原因:不同的python字符串和数字的行为,当与对象变量
代码1:
class Test:
var=2
def __init__(self):
self.var=self.var+1
p=Test()
print "p.var:",p.var
q=Test()
print "q.var:",q.var
输出1:
p.var:3
q.var:3
为什么不输出(根据概念用来解释码2)
p.var:3
q.var:4
代码2:
class Test:
var=[]
def __init__(self):
self.var.append("fool")
p=Test()
print "p.var:",p.var
q=Test()
print "q.var:",q.var
输出2:
p.var: ['fool']
q.var: ['fool', 'fool']
我读堆栈交易所CODE2的文章: python class instance variables and class variables
,但无法与以下concept.Please链接代码1帮助
这与“字符串和数字”无关。在第一段代码中,你有一个整数,你替换它;第二,你有一个列表,你在其上调用'append'。这些是根本不同的操作,所以当然不会让你感到惊讶,它们有不同的效果? –
我觉得他很好奇为什么'q.var'是3而不是4. – wpercy
感谢Daniel,我有一个困惑,为什么在第一种情况下输出不是3和4,或者类变量没有在第一种情况下更新但它在第二个? –