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的函数嵌套的使用方法
Jan 24 Python
Python实现全角半角转换的方法
Aug 18 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
Apr 02 Python
python爬虫租房信息在地图上显示的方法
May 13 Python
教你一步步利用python实现贪吃蛇游戏
Jun 27 Python
使用Pandas对数据进行筛选和排序的实现
Jul 29 Python
详解Django配置优化方法
Nov 18 Python
python绘制规则网络图形实例
Dec 09 Python
pytorch使用 to 进行类型转换方式
Jan 08 Python
TensorFLow 变量命名空间实例
Feb 11 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 Python
请求模块urllib之PYTHON爬虫的基本使用
Apr 08 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
很温暖很温暖的Lester Young
2021/03/03 冲泡冲煮
php文件上传你必须知道的几点
2015/10/20 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
一组JS创建和操作表格的函数集合
2009/05/07 Javascript
js prototype截取字符串函数
2010/04/01 Javascript
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
Jquery同辈元素选中/未选中效果的实例代码
2013/08/01 Javascript
js获取当前路径的简单示例代码
2014/01/08 Javascript
JS实现FLASH幻灯片图片切换效果的方法
2015/03/04 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
JavaScript常用函数工具集:lao-utils
2016/03/01 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
nodejs根据ip数组在百度地图中进行定位
2017/03/06 NodeJs
JS 学习总结之正则表达式的懒惰性和贪婪性
2017/07/03 Javascript
详解javascript函数写法大全
2019/03/25 Javascript
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
python写的ARP攻击代码实例
2014/06/04 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
python创建文件备份的脚本
2018/09/11 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
Django实现基于类的分页功能
2019/10/31 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
Pandas对每个分组应用apply函数的实现
2020/12/13 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
HTML5在canvas中绘制复杂形状附效果截图
2014/06/23 HTML / CSS
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
如何提高MySql的安全性
2014/06/19 面试题
材料化学应届生求职信
2013/10/09 职场文书
思想专业自荐信范文
2013/12/25 职场文书
AJAX实现省市县三级联动效果
2021/10/16 Javascript