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对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
May 08 Python
Python设计模式之观察者模式简单示例
Jan 10 Python
python使用itchat实现手机控制电脑
Feb 22 Python
Python3数据库操作包pymysql的操作方法
Jul 16 Python
对python中的iter()函数与next()函数详解
Oct 18 Python
Python统计分析模块statistics用法示例
Sep 06 Python
python socket通信编程实现文件上传代码实例
Dec 14 Python
Selenium 滚动页面至元素可见的方法
Mar 18 Python
python实现梯度法 python最速下降法
Mar 24 Python
Django-Scrapy生成后端json接口的方法示例
Oct 06 Python
Python hashlib模块的使用示例
Oct 09 Python
解决Pymongo insert时会自动添加_id的问题
Dec 05 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 eval函数用法 PHP中eval()函数小技巧
2012/10/31 PHP
PHP中提问频率最高的11个面试题和答案
2014/09/02 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
php面向对象重点知识分享
2019/09/27 PHP
JQuery 风格的HTML文本转义
2009/07/01 Javascript
使用upstart把nodejs应用封装为系统服务实例
2014/06/01 NodeJs
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
JS打印组合功能
2016/08/04 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
如何使用angularJs
2017/05/08 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(一)
2017/05/11 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
Vue.js中对css的操作(修改)具体方式详解
2018/10/30 Javascript
JS大坑之19位数的Number型精度丢失问题详解
2019/04/22 Javascript
基于layui实现高级搜索(筛选)功能
2019/07/26 Javascript
Vue extend的基本用法(实例详解)
2019/12/09 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
vue 根据选择的月份动态展示日期对应的星期几
2021/02/06 Vue.js
[26:52]LGD vs EG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python中字典(Dictionary)用法实例详解
2015/05/30 Python
Python 遍历列表里面序号和值的方法(三种)
2017/02/17 Python
解读! Python在人工智能中的作用
2017/11/14 Python
Python元组及文件核心对象类型详解
2018/02/11 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
在交互式环境中执行Python程序过程详解
2019/07/12 Python
Python使用指定端口进行http请求的例子
2019/07/25 Python
python库matplotlib绘制坐标图
2019/10/18 Python
韩国著名的在线综合购物网站:Akmall
2016/08/07 全球购物
Sql面试题
2013/03/20 面试题
遇到的Mysql的面试题
2014/06/29 面试题
毕业实习个人鉴定范文
2013/12/10 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
2015年领导班子工作总结
2015/05/23 职场文书
解决MySQL添加新用户-ERROR 1045 (28000)的问题
2022/03/03 MySQL
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android