How many memory copies do object variables in Python have?
本问题已经有最佳答案,请猛点这里访问。
我最近刚接触过python。以前我所有的编程知识都局限于Java。这里我有一个关于Python中对象变量的问题。我知道Python中的对象变量共享类实例。例如。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class A: list=[] y=A() x=A() x.list.append(1) y.list.append(2) x.list.append(3) y.list.append(4) print x.list [1,2,3,4] print y.list [1,2,3,4] |
所以我的问题是,
在Python中,在类范围内声明的任何内容都是有效的全局性的。当您在一个实例上查找该属性时,python找不到它,所以它会在该类上查找(然后它会一直在方法解析顺序上查找基类)。因此,在您的例子中,
正如我所理解的,这至少与Java的静态类似(虽然我在Java中不够流利,不能说完全相同)。
将属性与类分离的典型方法是将该属性绑定到实例(通常在
1 2 3 | class A(object): def __init__(self): self.list = [] |
在上面的例子中,
如果你再做一次实验,你会发现
现在进行测试。如果你在这节课上做实验会怎么样?
1 2 3 4 | class A(object): list = [] def __init__(self): self.list = [] |
答: