学习深拷贝浅拷贝相关内容时,想要将对象的地址都打印出来,查看拷贝后是否是同一个对象,代码如下:
import copy
class MobilePhone:
def __init__(self,cpu,screen):
self.cpu = cpu
self.screen = screen
class CPU:
def caculate(self):
print("算你个头")
print("CPU对象:",self)
class Screen:
def show(self):
print("显示个美女")
print("屏幕对象:",self)
#测试变量赋值
c1 = CPU
c2 = c1
print(c1)
print(c2)
s1 =Screen()
#测试浅拷贝
m1 = MobilePhone(c1,s1)
m2 = copy.copy(m1)
print(m1,m1.cpu,m1.screen)
print(m2,m2.cpu,m2.screen)
#测试深拷贝
m3 = copy.deepcopy(m1)
print(m3,m3.cpu,m3.screen)
以上代码打印结果如下:
<class ‘main.CPU’>
<class ‘main.CPU’>
<main.MobilePhone object at 0x0000024838ED5BB0> <class ‘main.CPU’> <main.Screen object at 0x0000024838ED55E0>
<main.MobilePhone object at 0x0000024838EA6640> <class ‘main.CPU’> <main.Screen object at 0x0000024838ED55E0>
<main.MobilePhone object at 0x0000024838F43310> <class ‘main.CPU’> <main.Screen object at 0x00000248390C8250>
发现打印的不对,为什么类打印对象m1,m2,m3的cpu属性时,都没有打印正确的地址,却打印出了:<class ‘main.CPU’> 这个东西
后来发现是在类的实例化的时候,忘记了在CPU后边加“括号”,增加括号后打印正常,这个地方实例化的时候加括号,一定要非常注意!
实例化的时候别忘了加括号
实例化的时候别忘了加括号
实例化的时候别忘了加括号
重要的事情说三遍!