一切皆对象和深浅拷贝

打印 上一主题 下一主题

主题 789|帖子 789|积分 2367

1.一切皆对象

在python中int、dict类都继承自object类,int和dict又都是type类的对象
  1. print(type(int))  # <class 'type'>
  2. print(type(dict)) # <class 'type'>
复制代码
那么type和object又是什么关系呢?我们来type一下object和type!
  1. print(type(type))  #<class 'type'>
  2. print(type(object)) #<class 'type'>
复制代码
其实:
1.object的元类其实是type类,object是由type类构造出来的对象
2.type是自己的对象(指针指向了自己)
3.type类又继承了object类
1.1一切皆对象的好处

它可以通过一切皆对象,使得任何类型的变量值能够赋值给变量!
因为,其本质是变量都指向了一个内存地址,而并不是直接指向具体的数据(在其他语言中不能这样)

2.深浅拷贝

1.赋值,本质是多了一个变量指向另一个变量的内存地址
  1. l = [11,22,[311,444,55]]
  2. l2 = l # 赋值操作,本质就是l2指向了l的内存地址
  3. print(l2 is l) # 结果为true
复制代码

2.浅拷贝,本质是又拷贝一份内存地址指向对应的变量值
  1. from copy import copy
  2. l = [111,222,[333,444]]
  3. l3 = copy(l) # 浅拷贝,只是拷贝了l的内存地址
  4. print(l3 is l) # 结果为false
  5. # 修改l3的列表值,l也会改变!
复制代码

3.深拷贝:本质内存地址、值全部拷贝一份,非常占内存!
  1. from copy import deepcopy
  2. l = [111,222,[333,444]]
  3. l4 = deepcopy(l)
  4. print(l4 is l) # 结果为false
  5. # 深拷贝是把内存地址、变量值全部拷贝了一份,所以修改l4中列表的值,l并不会改变
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

兜兜零元

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表