<分区>
我刚刚拥有。我不敢相信这是真的,但经过测试,我发现它是:
class A(object):
v = []
a = A()
b = A()
您认为以下代码会返回什么?
a.v is b.v
这个代码怎么样?
a.v.append(1)
a.v[0] == b.v[0]
果然,a.v 是 b.v
,它们都共享相同的引用 相同的列表。来自,嗯,所有其他编程语言背景,这有什么意义?
在 Java 中,如果我要编写这样一个类:
class A {
public Object[] v = new Object[]{};
}
...在我最疯狂的梦想中,我永远不会认为该类的两个实例会共享对数组的相同引用。
我的主要问题是,Python 类中的初始值是否与 Java、C# 等中的初始值等价?为什么该类的所有实例共享对同一列表的相同引用?