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 24 Python
Python入门之三角函数tan()函数实例详解
Nov 08 Python
python删除不需要的python文件方法
Apr 24 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
Oct 17 Python
Python判断一个文件夹内哪些文件是图片的实例
Dec 07 Python
Python搭建Spark分布式集群环境
Jul 05 Python
pandas 时间格式转换的实现
Jul 06 Python
Python实现代码块儿折叠
Apr 15 Python
python实现小程序推送页面收录脚本
Apr 20 Python
spyder 在控制台(console)执行python文件,debug python程序方式
Apr 20 Python
详解使用scrapy进行模拟登陆三种方式
Feb 21 Python
python基础之错误和异常处理
Oct 24 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/22 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
2015/12/21 PHP
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
监控 url fragment变化的js代码
2010/04/19 Javascript
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
2014/06/06 Javascript
connect中间件session、cookie的使用方法分享
2014/06/17 Javascript
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
weUI应用之JS常用信息提示弹层的封装
2016/11/21 Javascript
jQuery为某个div加入行样式
2017/06/09 jQuery
JS实现前端页面的搜索功能
2018/06/12 Javascript
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
Python3 socket同步通信简单示例
2017/06/07 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
Python字节单位转换实例
2019/12/05 Python
Python JSON编解码方式原理详解
2020/01/20 Python
python利用 keyboard 库记录键盘事件
2020/10/16 Python
纯css3制作煽动翅膀的蝴蝶的示例
2018/04/23 HTML / CSS
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
高二化学教学反思
2014/01/30 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
个人自荐材料
2014/05/23 职场文书
保洁公司服务承诺书
2014/05/28 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
大学生求职信怎么写
2015/03/19 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
检讨书格式范文
2015/05/07 职场文书
七一活动主持词
2015/06/29 职场文书
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技