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中使用urllib2防止302跳转的代码例子
Jul 07 Python
为python设置socket代理的方法
Jan 14 Python
详解Python中 sys.argv[]的用法简明解释
Dec 20 Python
http请求 request失败自动重新尝试代码示例
Jan 25 Python
Django中cookie的基本使用方法示例
Feb 03 Python
python opencv 图像尺寸变换方法
Apr 02 Python
itchat-python搭建微信机器人(附示例)
Jun 11 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
Jul 20 Python
python实现测试工具(一)——命令行发送get请求
Oct 19 Python
发工资啦!教你用Python实现邮箱自动群发工资条
May 10 Python
python 下划线的多种应用场景总结
May 12 Python
分享7个 Python 实战项目练习
Mar 03 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
博士208HAF收音机实习报告
2021/03/02 无线电
用文本文件制作留言板提示(下)
2006/10/09 PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
PHP写日志的实现方法
2014/11/05 PHP
利用php_imagick实现复古效果的方法
2016/10/18 PHP
PHP实现小偷程序实例
2016/10/31 PHP
CI框架AR数据库操作常用函数总结
2016/11/21 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
JavaScript中的History历史对象
2008/01/16 Javascript
jquery 锁定弹出层实现代码
2010/02/23 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
Iframe 自动适应页面的高度示例代码
2014/02/26 Javascript
js对象转json数组的简单实现案例
2014/02/28 Javascript
json中换行符的处理方法示例介绍
2014/06/10 Javascript
解决js下referer兼容各大浏览器的方法
2014/11/03 Javascript
jQuery使用之处理页面元素用法实例
2015/01/19 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
js入门之Function函数的使用方法【新手必看】
2016/11/22 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
使用bat打开多个cmd窗口执行gulp、node
2017/02/17 Javascript
React-Native左右联动List的示例代码
2017/09/21 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
对numpy数据写入文件的方法讲解
2018/07/09 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
一文秒懂python读写csv xml json文件各种骚操作
2019/07/04 Python
如何使用Python发送HTML格式的邮件
2020/02/11 Python
django实现将修改好的新模型写入数据库
2020/03/31 Python
浅析python函数式编程
2020/09/26 Python
Python 找出英文单词列表(list)中最长单词链
2020/12/14 Python
全面解析CSS Media媒体查询使用操作(推荐)
2017/08/15 HTML / CSS
使用CSS3来代替JS实现交互
2017/08/10 HTML / CSS
企业军训感想
2014/02/07 职场文书
大学生活自我评价
2014/04/09 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP