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使用scrapy抓取网站sitemap信息的方法
Apr 08 Python
用Python的Flask框架结合MySQL写一个内存监控程序
Nov 07 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
Mar 04 Python
利用Python yagmail三行代码实现发送邮件
May 11 Python
Centos 升级到python3后pip 无法使用的解决方法
Jun 12 Python
基于Python列表解析(列表推导式)
Jun 23 Python
Python爬虫框架Scrapy基本用法入门教程
Jul 26 Python
Django 实现外键去除自动添加的后缀‘_id’
Nov 15 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 Python
Python+Selenium自动化环境搭建与操作基础详解
Mar 13 Python
python如何查找列表中元素的位置
May 30 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小型企业库存管理系统的设计与实现代码
2011/05/16 PHP
php防注入,表单提交值转义的实现详解
2013/06/10 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
php微信公众号开发之校园图书馆
2018/10/20 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
2019/10/10 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
JavaScript延迟加载
2021/03/09 Javascript
javascript removeChild 使用注意事项
2009/04/11 Javascript
使用Jquery来实现可以输入值的下拉选单 雏型
2011/12/06 Javascript
php is_numberic函数造成的SQL注入漏洞
2014/03/10 Javascript
jQuery中Ajax的load方法详解
2015/01/14 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
2015/08/26 Javascript
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
JS弹出新窗口被拦截的解决方法
2016/08/09 Javascript
Angularjs 设置全局变量的方法总结
2016/10/20 Javascript
微信小程序 登录的简单实现
2017/04/19 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
Python 中 Meta Classes详解
2016/02/13 Python
python实现隐马尔科夫模型HMM
2018/03/25 Python
Python使用 Beanstalkd 做异步任务处理的方法
2018/04/24 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
关于Pytorch的MLP模块实现方式
2020/01/07 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
python 错误处理 assert详解
2020/04/20 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
澳大利亚波西米亚风情网上商店:Czarina
2019/03/18 全球购物
促销活动计划书
2014/05/02 职场文书
副乡长群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
法定授权委托证明书
2014/09/27 职场文书
追悼会答谢词
2015/01/05 职场文书
幼师必备:幼儿园期末教师评语50条
2019/11/01 职场文书