小编mar*_*tin的帖子

字典和数组作为类与实例变量

这是获得积分的简单方法.请解释以下内容:

class C:
    a = {}
    b = 0
    c = []

    def __init__(self):
        self.x = {}

    def d(self, k, v):
        self.x[k] = v
        self.a[k] = v;
        self.b = v
        self.c.append(v)

    def out(self, k):
        print(self.x[k], self.a[k], self.b, self.c[0])

c = C()
d = C()
c.d(1, 10)
d.d(1, 20)
c.out(1)  
d.out(1)
Run Code Online (Sandbox Code Playgroud)

将输出以下内容:

10 20 10 10
20 20 20 10
Run Code Online (Sandbox Code Playgroud)

为什么字典,列表和"普通"变量的表现各不相同?

编辑:我认为问题很明显,但让我更详细地拼写:

我有一个有三个属性的类,a,b和c.我创建了该类的两个实例.然后我调用一个方法来修改每个实例的这些属性.当我检查属性时,我发现如果一个属性是一个字典,它将在所有实例中共享,而如果它是一个"普通"变量,它的行为就像人们期望的那样,每个实例都是不同的.

python

-1
推荐指数
1
解决办法
1195
查看次数

标签 统计

python ×1