只有可变对象才有拷贝的说法
import copy
class A:
def __init__(self):
self.list = [] # 可变对象
a1 = A()
a2 = a1 # a2 和 a1 完全相同
a3 = copy.copy(a1) # a3 浅拷贝了 a1,即 a3 本身是新的,但内部的数据和 a1 是共享的
a4 = copy.deepcopy(a1) # a4 是深拷贝,a4 和 a4 的属性都是新的
print("id(a1)={0}, id(list)={1}".format( id(a1), id(a1.list)) )
print("id(a2)={0}, id(list)={1}".format( id(a2), id(a2.list)) )
print("id(a3)={0}, id(list)={1}".format( id(a3), id(a3.list)) )
print("id(a4)={0}, id(list)={1}".format( id(a4), id(a4.list)) )
a1.list.append(123)
print(a1.list)
print(a2.list)
print(a3.list)
print(a4.list)
运行结果: