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 19 Python
Mac中Python 3环境下安装scrapy的方法教程
Oct 26 Python
Flask解决跨域的问题示例代码
Feb 12 Python
Python实现绘制双柱状图并显示数值功能示例
Jun 23 Python
对Python 检查文件名是否规范的实例详解
Jun 10 Python
浅谈python多进程共享变量Value的使用tips
Jul 16 Python
python爬虫项目设置一个中断重连的程序的实现
Jul 26 Python
在OpenCV里实现条码区域识别的方法示例
Dec 04 Python
Python工程师必考的6个经典面试题
Jun 28 Python
Python3合并两个有序数组代码实例
Aug 11 Python
Python 生成短8位唯一id实战教程
Jan 13 Python
python OpenCV学习笔记
Mar 31 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网站基础优化方法小结
2008/09/29 PHP
php 网页游戏开发入门教程一(webgame+design)
2009/10/26 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
CodeIgniter框架基本增删改查操作示例
2017/03/23 PHP
PHP通过文件保存和更新信息的方法分析
2019/09/12 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
javasctipt如何显示几分钟前、几天前等
2014/04/30 Javascript
javascript实现禁止右键和F12查看源代码
2014/12/26 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
2016/10/10 Javascript
jquery心形点赞关注效果的简单实现
2016/11/14 Javascript
Vue表单验证插件Vue Validator使用方法详解
2017/04/07 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
2017/04/11 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
深入理解Vue官方文档梳理之全局API
2017/11/22 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
electron中使用bootstrap的示例代码
2018/11/06 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
layui输入框只允许输入中文且判断长度的例子
2019/09/18 Javascript
jQuery实现视频展示效果
2020/05/30 jQuery
js实现抽奖功能
2020/11/24 Javascript
Python原始字符串(raw strings)用法实例
2014/10/13 Python
Python常用算法学习基础教程
2017/04/13 Python
python实现mysql的读写分离及负载均衡
2018/02/04 Python
对python append 与浅拷贝的实例讲解
2018/05/04 Python
Python根据成绩分析系统浅析
2019/02/11 Python
Tensorflow与Keras自适应使用显存方式
2020/06/22 Python
阿姆斯特丹城市卡:Amsterdam Pass
2019/12/01 全球购物
2014年团委工作总结
2014/11/13 职场文书
2014年公司工作总结
2014/11/22 职场文书
golang 生成对应的数据表struct定义操作
2021/04/28 Golang
MongoDB支持的索引类型
2022/04/11 MongoDB