python析构函数用法及注意事项


Posted in Python onJune 22, 2021

1、主动删除对象调用del 对象;程序运行结束后,python也会自动进行删除其他的对象。

class Animal:
    def __del__(self):
        print("销毁对象{0}".format(self))
cat = Animal()
cat2 = Animal()
del cat2
print("程序结束")

2、如果重写子类的del方法,则必须显式调用父类的del方法,这样才能保证在回收子类对象时,其占用的资源(可能包含继承自父类的部分资源)能被彻底释放。

class Animal:
    def __del__(self):
        print("调用父类 __del__() 方法")
        
class Bird(Animal):
    def __del__(self):
       # super(Bird,self).__del__()  #方法1:显示调用父类的del方法
        print("调用子类 __del__() 方法")
 
cat = Bird()
#del cat   #只能调用子类里面的__del__
#super(Bird,cat).__del__() #方法2:显示调用父类的__del__

函数实例扩展:

#coding=utf-8
'''
魔法方法,被__双下划线所包围
在适当的时候自动被调用
'''
#构造init、析构del
class Rectangle:
  def __init__(self,x,y):
    self.x = x
    self.y = y
    print('构造')
  '''
  del析构函数,并不是在del a对象的时候就会调用该析构函数
  只有当该对象的引用计数为0时才会调用析构函数,回收资源
  析构函数被python的垃圾回收器销毁的时候调用。当某一个对象没有被引用时,垃圾回收器自动回收资源,调用析构函数
  '''
  def __del__(self):
    print('析构')
  def getPeri(self):
    return (self.x + self.y)*2
  def getArea(self):
    return self.x * self.y
if __name__ == '__main__':
  rect = Rectangle(3,4)
  # a = rect.getArea()
  # b = rect.getPeri()
  # print(a,b)
  rect1 = rect
  del rect1
  # del rect
  while 1:
    pass

到此这篇关于python析构函数用法及注意事项的文章就介绍到这了,更多相关python析构函数的使用注意内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python函数缺省值与引用学习笔记分享
Feb 10 Python
python使用rabbitmq实现网络爬虫示例
Feb 20 Python
python3读取MySQL-Front的MYSQL密码
May 03 Python
python绘制双柱形图代码实例
Dec 14 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
Jan 24 Python
python3+PyQt5实现柱状图
Apr 24 Python
详解python单元测试框架unittest
Jul 02 Python
Python爬取商家联系电话以及各种数据的方法
Nov 10 Python
python对绑定事件的鼠标、按键的判断实例
Jul 17 Python
python获取本周、上周、本月、上月及本季的时间代码实例
Sep 08 Python
使用pipenv管理python虚拟环境的全过程
Sep 25 Python
Python实现日志实时监测的示例详解
Apr 06 Python
Python自动化测试PO模型封装过程详解
python中的class_static的@classmethod的巧妙用法
Jun 22 #Python
Python答题卡识别并给出分数的实现代码
Python 中的单分派泛函数你真的了解吗
Jun 22 #Python
Python实现DBSCAN聚类算法并样例测试
python中sqllite插入numpy数组到数据库的实现方法
Jun 21 #Python
利用Python第三方库实现预测NBA比赛结果
You might like
PHP stream_context_create()作用和用法分析
2011/03/29 PHP
PHP安全性漫谈
2012/06/28 PHP
php类中private属性继承问题分析
2012/11/01 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
PHP处理postfix邮件内容的方法
2015/06/16 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
php curl获取到json对象并转成数组array的方法
2018/05/31 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
2020/04/26 PHP
php redis setnx分布式锁简单原理解析
2020/10/23 PHP
Javascript的一种模块模式
2008/03/22 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
2020/11/02 Javascript
使用webpack和rollup打包组件库的方法
2021/02/25 Javascript
python算法学习之基数排序实例
2013/12/18 Python
Python实现的二维码生成小软件
2014/07/11 Python
python脚本实现查找webshell的方法
2014/07/31 Python
Python 序列化 pickle/cPickle模块使用介绍
2014/11/30 Python
python自动格式化json文件的方法
2015/03/11 Python
简单介绍Python中的几种数据类型
2016/01/02 Python
浅谈Python数据类型判断及列表脚本操作
2016/11/04 Python
django admin后台添加导出excel功能示例代码
2019/05/15 Python
django 多数据库及分库实现方式
2020/04/01 Python
jupyter notebook读取/导出文件/图片实例
2020/04/16 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
快速解决pymongo操作mongodb的时区问题
2020/12/05 Python
python用700行代码实现http客户端
2021/01/14 Python
CSS3制作3D立方体loading特效
2020/11/09 HTML / CSS
编程输出如下图形
2013/11/24 面试题
车间主管岗位职责
2013/11/14 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书