Python浅复制中对象生存周期实例分析


Posted in Python onApril 02, 2018

本文实例讲述了Python浅复制中对象生存周期。分享给大家供大家参考,具体如下:

Python的浅复制以及深复制我了解的并不多,我不清楚shutil中的copy1和copy2是不是算是浅复制和深复制?这两个操作,一个是文件属性重建,还有一个是文件属性不变。不知道对象的复制是否可以以此类比?

在复制之前,为了能够观看一下GC的执行,定义一个特殊的类和对象。测试代码如下:

class Demo:
    def __del__(self):
       print("Removing{0}".format(id(self)))
x = Demo()
del x

程序执行结果如下:

E:\01_workspace\02_programme_language\03_python\03_OOP\2017\08>pythoncopy1.py
Removing1772226785520

接下来构造浅复制的例子:

>>>obj_list1 = [Demo(),Demo()]
>>>obj_list2 = obj_list1[:]
>>> del obj_list1
>>> del obj_list2
Removing1902510644416
Removing1902510644360

从上面的结果看,第一次del并没有触发对象销毁的方法执行。这是在交互界面中进行调试出现的结果,如果代码是写到一个具体的文件中,那么程序执行的结果有可能不同。当所有的语句都写到同一个文件中的时候,文件中的对象作用域会有轻微的调整。这是值得我们注意的。

另一种常见的浅复制方法:

>>> o1 =o2 = Demo()
>>> del o1
>>> del o2
Removing1902510136568

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python 专题二 条件语句和循环语句的基础知识
Mar 19 Python
python初学之用户登录的实现过程(实例讲解)
Dec 23 Python
基于Python中单例模式的几种实现方式及优化详解
Jan 09 Python
python生成lmdb格式的文件实例
Nov 08 Python
Python 仅获取响应头, 不获取实体的实例
Aug 21 Python
python如何将两个txt文件内容合并
Oct 18 Python
调用其他python脚本文件里面的类和方法过程解析
Nov 15 Python
Tensorflow训练模型越来越慢的2种解决方案
Feb 07 Python
Django通过json格式收集主机信息
May 29 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
Oct 31 Python
Python中os模块的简单使用及重命名操作
Apr 17 Python
使用Django框架创建项目
Jun 10 Python
python基础教程项目五之虚拟茶话会
Apr 02 #Python
Python实现批量读取图片并存入mongodb数据库的方法示例
Apr 02 #Python
python基础教程项目四之新闻聚合
Apr 02 #Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
Apr 02 #Python
python基础教程项目三之万能的XML
Apr 02 #Python
python opencv检测目标颜色的实例讲解
Apr 02 #Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 #Python
You might like
用Php编写注册后Email激活验证的实例代码
2013/03/11 PHP
基于PHP静态类的原罪详解
2013/05/06 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
2016/05/13 PHP
关于PHP通用返回值设置方法
2017/03/31 PHP
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
JSON格式化输出
2014/11/10 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
2016/06/12 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
2017/02/27 Javascript
jQuery实现元素的插入
2017/02/27 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
2017/06/30 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
2020/09/10 Javascript
python文件操作整理汇总
2014/10/21 Python
python中引用与复制用法实例分析
2015/06/04 Python
Python读取网页内容的方法
2015/07/30 Python
详细介绍Python的鸭子类型
2016/09/12 Python
详解python3实现的web端json通信协议
2016/12/29 Python
python基础教程项目二之画幅好画
2018/04/02 Python
python实现车牌识别的示例代码
2019/08/05 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
对django的User模型和四种扩展/重写方法小结
2019/08/17 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
物理系毕业生自荐信
2013/11/01 职场文书
学生感冒英文请假条
2014/02/04 职场文书
简易离婚协议书(范本)
2014/10/25 职场文书
2015年工会工作总结
2015/03/30 职场文书
Windows7下FTP搭建图文教程
2022/08/05 Servers
Go语言编译原理之源码调试
2022/08/05 Golang