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编程中对super函数的正确理解和用法解析
Jul 02 Python
Python自动生产表情包
Mar 17 Python
Python简单的制作图片验证码实例
May 31 Python
Python编程实现的图片识别功能示例
Aug 03 Python
Python爬虫中urllib库的进阶学习
Jan 05 Python
Python基于递归实现电话号码映射功能示例
Apr 13 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
Jun 26 Python
Flask框架web开发之零基础入门
Dec 10 Python
浅谈python新式类和旧式类区别
Apr 26 Python
Python 监测文件是否更新的方法
Jun 10 Python
python腾讯语音合成实现过程解析
Aug 01 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
Feb 26 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 查找字符串常用函数介绍
2012/06/07 PHP
php微信开发之自定义菜单实现
2016/11/18 PHP
CodeIgniter框架基本增删改查操作示例
2017/03/23 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
Js操作树节点自动折叠展开的几种方法
2014/05/05 Javascript
JS实现单行文字不间断向上滚动的方法
2015/01/29 Javascript
jQuery实现Select下拉列表进行状态选择功能
2017/03/30 jQuery
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
详解基于vue的服务端渲染框架NUXT
2018/06/20 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
vue a标签点击实现赋值方式
2020/09/07 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
Python运行的17个时新手常见错误小结
2012/08/07 Python
python网络编程之读取网站根目录实例
2014/09/30 Python
Unicode和Python的中文处理
2017/03/19 Python
快速了解python leveldb
2018/01/18 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
2020/02/17 Python
Python实现自动整理文件的脚本
2020/12/17 Python
巴西婴儿用品商店:Bebe Store
2017/11/23 全球购物
英国独特家具和家庭用品购物网站:Cuckooland
2020/08/30 全球购物
CLR与IL分别是什么含义
2016/08/23 面试题
内部类的定义、种类以及优点
2013/10/16 面试题
医学生自我评价
2014/01/27 职场文书
留守儿童工作方案
2014/06/02 职场文书
社会实践活动总结范文
2014/07/03 职场文书
科学育儿宣传标语
2014/10/08 职场文书
2014年妇女工作总结
2014/12/06 职场文书
2015年材料员工作总结
2015/04/30 职场文书
大学生村官入党自传
2015/06/26 职场文书
《称赞》教学反思
2016/02/17 职场文书
python 调用js的四种方式
2021/04/11 Python
opencv深入浅出了解机器学习和深度学习
2022/03/17 Python