python中再循环中每次创建一个类,并为其里面的一个变量赋值,为什么类是重复使用的?

2025-02-01 04:01:38
推荐回答(2个)
回答1:

因为你定义的时候把ver定义成类全局变量了,所以类的实例会共享这个变量,如果想各自拥有自己的ver,应该像下面这样:

class Surface:
def __init__(self):
self.ver = []
for i in range(5):
s = Surface()
s.ver.append(i)
print s.ver

回答2:

你可以这样试:
var=[]
for i in range(5):
var.append(i)
print var
for循环每次循环一次是对列表var进行一次append,然后进行一次print所以你会看到:
[0]
[0,1]
............
我不知道你为什么会想成是
[0]
[1]
...
这样的输出结果。
而且每次被定义属性后的类也是新的啊。怎么不是新的?
PS:

你看到哈:
开始时Surface中的var是[]
当i是0时surface中的var是[0]
这时实例S继承surface中的var属性,也成了[0]
当i 是1时s原本的var本来就是[0],现在又append(1),你说s中的属性是多少?