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中的自省(反射)详解
Jun 02 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
Oct 16 Python
Python 从列表中取值和取索引的方法
Dec 25 Python
创建Shapefile文件并写入数据的例子
Nov 26 Python
520使用Python实现“我爱你”表白
May 20 Python
解决tensorflow读取本地MNITS_data失败的原因
Jun 22 Python
Python pickle模块常用方法代码实例
Oct 10 Python
Python爬虫之Selenium多窗口切换的实现
Dec 04 Python
python关于集合的知识案例详解
May 30 Python
Python pandas之求和运算和非空值个数统计
Aug 07 Python
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
Apr 06 Python
Python中requests库的用法详解
Jun 05 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下HTTP Response中的Chunked编码实现方法
2008/11/19 PHP
基于empty函数的判断详解
2013/06/17 PHP
php对图像的各种处理函数代码小结
2013/07/08 PHP
php中序列化与反序列化详解
2017/02/13 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
2009/12/27 Javascript
合并table相同单元格的jquery插件分享(很精简)
2011/06/20 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
跨域传值即主页面与iframe之间互相传值
2013/12/09 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
javascript的BOM
2016/05/03 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
2017/07/04 Javascript
使用Bootrap和Vue实现仿百度搜索功能
2017/10/26 Javascript
Node 搭建一个静态资源服务器的实现
2019/05/20 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
JS eval代码快速解密实例解析
2020/04/23 Javascript
JavaScript使用prototype属性实现继承操作示例
2020/05/22 Javascript
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
[01:01:22]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
详解Python中pandas的安装操作说明(傻瓜版)
2019/04/08 Python
基于打开pycharm有带图片md文件卡死问题的解决
2020/04/24 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
会计与审计专业大专生求职信
2013/10/03 职场文书
《天安门广场》教学反思
2014/04/23 职场文书
总经理人事任命书
2014/06/05 职场文书
中学生逃课检讨书
2015/02/17 职场文书
2015年母亲节寄语
2015/03/23 职场文书
初一年级组工作总结
2015/08/12 职场文书
使用PDF.js渲染canvas实现预览pdf的效果示例
2021/04/17 Javascript
react 路由Link配置详解
2021/11/11 Javascript