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