根据我过去对python oop的了解,我知道python对所有类实例都有一个类变量的单一副本;这意味着:
>>> class A: foo = []
>>> a, b = A(), A()
>>> a.foo.append(5)
>>> b.foo
[5]
但当我这么做的时候:
>>> class A():
cl_var=5
def __init__(self,b):
self.obj_var=b
>>> a1,a2=A(2),A(5)
>>> a1.cl_var
5
>>> a1.cl_var=23
>>> a2.cl_var
5
为什么a2.cl\u var没有更改为23?你知道吗
当您分配给
a1.cl_var
时,您将重新绑定与a1
相关联的^{cl_var
。这不会影响a2.cl_var
。你知道吗如您所见,
a1.cl_var
和a2.cl_var
是同一个对象。你知道吗但是,当您指定给
a1.cl_var
时,它们将成为不同的对象:在
a
/b
示例中不会发生这种情况,因为在那里您可以通过引用修改foo
。您不需要重新绑定(即分配给)它。你知道吗相关问题 更多 >
编程相关推荐