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的Flask框架下收发电子邮件的教程
Apr 21 Python
Python中__init__.py文件的作用详解
Sep 18 Python
python实现发送邮件功能代码
Dec 14 Python
1 行 Python 代码快速实现 FTP 服务器
Jan 25 Python
python Selenium实现付费音乐批量下载的实现方法
Jan 24 Python
python如何爬取网站数据并进行数据可视化
Jul 08 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
Oct 17 Python
python 爬取马蜂窝景点翻页文字评论的实现
Jan 20 Python
Django中FilePathField字段的用法
May 21 Python
Python函数参数分类原理详解
May 28 Python
class类在python中获取金融数据的实例方法
Dec 10 Python
Python多线程 Queue 模块常见用法
Jul 04 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中使用addslashes函数转义的安全性原理分析
2014/11/03 PHP
php封装的连接Mysql类及用法分析
2015/12/10 PHP
PHP常用函数总结(180多个)
2016/12/25 PHP
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
基于jQuery实现一个marquee无缝滚动的插件
2017/03/09 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
Angular4学习笔记之准备和环境搭建项目
2017/08/01 Javascript
vue实现的上拉加载更多数据/分页功能示例
2019/05/25 Javascript
vue.js iview打包上线后字体图标不显示解决办法
2020/01/20 Javascript
[02:04]2014DOTA2国际邀请赛 BBC小组赛第三天总结
2014/07/12 DOTA
Python函数学习笔记
2008/10/07 Python
Python下的twisted框架入门指引
2015/04/15 Python
Python回调函数用法实例详解
2015/07/02 Python
在Django的URLconf中使用命名组的方法
2015/07/18 Python
Python使用PIL模块生成随机验证码
2017/11/21 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
pybind11在Windows下的使用教程
2019/07/04 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
python matplotlib实现将图例放在图外
2020/04/17 Python
python批量修改文件名的示例
2020/09/27 Python
htnl5利用svg页面高斯模糊的方法
2018/07/20 HTML / CSS
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
全球才华横溢工匠的家居装饰、珠宝和礼物:NOVICA
2021/01/22 全球购物
工作决心书范文
2014/03/11 职场文书
实习指导老师评语
2014/04/26 职场文书
广播节目策划方案
2014/05/23 职场文书
协商一致解除劳动合同协议书
2014/09/14 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
校运会班级霸气口号
2015/12/24 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
Golang 对es的操作实例
2022/04/20 Golang