老沫白 发表于 2022-2-8 17:22:40

类属性不是是所有实例共享的吗?

>>> class A:
...   a = 1
...
>>> c = A()
>>> d = A()
>>> c.a
1
>>> c.a = 2
>>> d.a
1
>>>
我突然被问倒了,这里的类属性被c改了,但b显示的

类属性还是1啊,是不是c.a = 2的问题?

python爱好者. 发表于 2022-2-8 17:22:41

老沫白 发表于 2022-2-8 17:37
我主要是想知道为什么c.a和b.a不行

因为只有在总的 class 类中改变才能使所有的实例对象一起随着改变,
而单独改变实例对象中的变量是无法牵扯到另一个实例对象的!

ckblt 发表于 2022-2-8 17:30:30

应该是 A.a = 2

老沫白 发表于 2022-2-8 17:31:24

ckblt 发表于 2022-2-8 17:30
应该是 A.a = 2

为什么?

ckblt 发表于 2022-2-8 17:34:45

这样才能让c.a, d.a都是 2

老沫白 发表于 2022-2-8 17:37:12

ckblt 发表于 2022-2-8 17:34
这样才能让c.a, d.a都是 2

我主要是想知道为什么c.a和b.a不行

小伤口 发表于 2022-2-8 17:44:29

老沫白 发表于 2022-2-8 17:37
我主要是想知道为什么c.a和b.a不行

类相当于一个模板,实例化相当于粘贴这个模板,粘贴之后修改的内容,不会干扰到原模板和其他粘贴的模板,
A.a这个就相当于修改原模版,所以实例化的模板也会被改变,类存在的意义就在于将一个事物归类

python爱好者. 发表于 2022-2-8 17:47:41

谢谢兄弟好评!{:10_297:}{:10_281:}{:10_298:}

傻眼貓咪 发表于 2022-2-8 17:59:00

小黑是乌龟
小白是乌龟

小黑是黑色的,小白不一定是黑色
乌龟是黑色的,小黑和小白都是黑色的
页: [1]
查看完整版本: 类属性不是是所有实例共享的吗?