Python: unable to explain class member list behaviour
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
“Least Astonishment” in Python: The Mutable Default Argument
Default values for arguments
我很难解释属于某个类的列表的行为。
1 2 3 4 5 6 7 8 9 10 11 | >>> class A(object): ... def __init__(self, L=[]): ... self.L = L ... >>> a1 = A() >>> a2 = A() >>> a1.L.append("test") >>> print a1.L ['test'] >>> print a2.L ['test'] |
在这个例子中,a2.l是如何得到它的值的?我只在a1的列表中添加了一个项目。他们现在是怎么分享名单的?
谢谢,
亨利
所有评论的简要总结:
问题与班级无关。这是因为您将值存储在函数的默认参数中,而默认参数存储在函数对象中。