假设你有这样的事情:Python实例和属性:这是一个错误还是我完全错了?
class intlist:
def __init__(self,l = []):
self.l = l
def add(self,a):
self.l.append(a)
def appender(a):
obj = intlist()
obj.add(a)
print obj.l
if __name__ == "__main__":
for i in range(5):
appender(i)
一个函数创建intList中的实例,并在这个新的实例的方法追加在实例属性升调用。
如何产生该代码的输出是:
[0]
[0,1]
[0,1,2]
[0,1,2 ,3]
[0,1,2,3,4]
? 如果切换
obj = intlist()
与
obj = intlist(l=[])
我得到所需的输出
[0]
[1]
[2]
[3]
[4]
为什么会发生这种情况?
感谢
+1措辞这个这样的问题,并从一开始就承认错误。这就是我们学习的方式! :) – jathanism 2010-03-08 17:01:24
相关:http://stackoverflow.com/questions/1011431/python-things-one-must-avoid – 2010-03-08 17:07:42
谢谢大家,现在我明白了,我必须更多关注我作为默认值使用的内容。再次感谢:) – 2010-03-09 09:51:35