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 基础学习第二弹 类属性和实例属性
Aug 27 Python
深入理解Python 代码优化详解
Oct 27 Python
python中django框架通过正则搜索页面上email地址的方法
Mar 21 Python
详解Python中for循环是如何工作的
Jun 30 Python
python3写的简单本地文件上传服务器实例
Jun 04 Python
python处理multipart/form-data的请求方法
Dec 26 Python
python Manager 之dict KeyError问题的解决
Dec 21 Python
Python实现ATM系统
Feb 17 Python
python绘制动态曲线教程
Feb 24 Python
Python pandas如何向excel添加数据
May 22 Python
python用什么编辑器进行项目开发
Jun 17 Python
pyqt5 textEdit、lineEdit操作的示例代码
Aug 12 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 正则表达式小结
2009/08/31 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
javascript css float属性的特殊写法
2008/11/13 Javascript
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
2012/01/13 Javascript
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
IE8下Jquery获取select选中的值post到后台报错问题
2014/07/02 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
javascript实现省市区三级联动下拉框菜单
2015/11/17 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
AngularJS 模块化详解及实例代码
2016/09/14 Javascript
JavaScript实现星级评分
2017/01/12 Javascript
原生JS实现的轮播图功能详解
2018/08/06 Javascript
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
2019/04/23 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
JS document内容及样式操作完整示例
2020/01/14 Javascript
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
python正则匹配抓取豆瓣电影链接和评论代码分享
2013/12/27 Python
python利用有道翻译实现"语言翻译器"的功能实例
2017/11/14 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
python区分不同数据类型的方法
2019/10/14 Python
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
企业面试题试卷附带答案
2015/12/20 面试题
怎么样写好简历中的自我评价
2013/10/25 职场文书
出国留学计划书
2014/04/27 职场文书
班级读书活动总结
2014/06/30 职场文书
工作经常出错的检讨书
2014/09/13 职场文书
委托书格式要求
2015/01/28 职场文书
小学班主任工作随笔
2015/08/15 职场文书
python中__slots__节约内存的具体做法
2021/07/04 Python
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫