今天小渣小孙,又遇到了一个问题,作为一个编程新手,并且从来没有系统学过Python的同学中的一员,小渣小孙猜想大概很多同学都会有这样的疑惑:
(2)如果将类赋值给一个变量,然后这个变量又赋值给另外一个变量,这个类会不会产生联动变化
1关于赋值
首先,我们先定义一个简单的类:
class A:
def __init__(self):
self.A_1=[]
def _add(self,a):
self.A_1.append(a)
def _del(self):
if self.A_1!=[]:
del self.A_1[-1]
然后,当我们将K[1]赋值给A时,心里想一下地址是变化了还是没变:
K=[]
for i in range(5):
a=A()
a._add(1)
K.append(a)
a=A()
A=K[1]
A._add(1)
K.append(A)
首先,我们先断点看看运行情况:
先给出for循环后,K中存储的地址情况:
然后,看看A的地址情况,可以看出A的地址是没有变的哈,还是K[1]中的地址
现在我们想让他变怎么办:采用copy,看看由这个代码生产的地址是否变了:
import copy
class A:
def __init__(self):
self.A_1=[]
def _add(self,a):
self.A_1.append(a)
def _del(self):
if self.A_1!=[]:
del self.A_1[-1]
K=[]
for i in range(2):
a=A()
a._add(1)
K.append(a)
a=A()
A=copy.copy(K[1])
A._add(1)
K.append(A)
print(K)
由输出可以看出,很明显变了哈:
扫描二维码关注公众号,回复:
12906128 查看本文章

注:这是一条刷文章数的博文,哇咔咔,哈哈哈,不过希望能提供给需要的人呀!!!