Python:无法解释类成员列表行为

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的列表中添加了一个项目。他们现在是怎么分享名单的?

谢谢,

亨利


所有评论的简要总结:

问题与班级无关。这是因为您将值存储在函数的默认参数中,而默认参数存储在函数对象中。