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 字符串定义
Sep 25 Python
python连接mysql调用存储过程示例
Mar 05 Python
Python装饰器decorator用法实例
Nov 10 Python
Python实现短网址ShortUrl的Hash运算实例讲解
Aug 10 Python
Python实现加载及解析properties配置文件的方法
Mar 29 Python
利用pyinstaller将py文件打包为exe的方法
May 14 Python
用于业余项目的8个优秀Python库
Sep 21 Python
python中正则表达式与模式匹配
May 07 Python
Python利用WMI实现ping命令的例子
Aug 14 Python
Python 函数list&read&seek详解
Aug 28 Python
Python中xml和dict格式转换的示例代码
Nov 07 Python
python输出pdf文档的实例
Feb 13 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函数解决SQL injection
2006/10/09 PHP
PHP+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
需要注意的几个PHP漏洞小结
2012/02/05 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
json的键名为数字时的调用方式(示例代码)
2013/11/15 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
JavaScript使用过程中需要注意的地方和一些基本语法
2010/08/26 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
2020/05/16 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
2016/05/05 Javascript
jquery分隔Url的param方法(推荐)
2016/05/25 Javascript
angularjs点击图片放大实现上传图片预览
2017/02/24 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
nodejs实现爬取网站图片功能
2017/12/14 NodeJs
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
2018/08/08 Javascript
学习使用ExpressJS 4.0中的新Router的用法
2018/11/06 Javascript
简单两步使用node发送qq邮件的方法
2019/03/01 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
vue递归组件实战之简单树形控件实例代码
2019/08/27 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
2020/09/29 Javascript
[00:03]DOTA2新版本PA至宝展示
2014/11/19 DOTA
Python的ORM框架SQLAlchemy入门教程
2014/04/28 Python
python利用拉链法实现字典方法示例
2017/03/25 Python
Python 脚本的三种执行方式小结
2019/12/21 Python
Django 限制访问频率的思路详解
2019/12/24 Python
python 的topk算法实例
2020/04/02 Python
Python基于Faker假数据构造库
2020/11/30 Python
基于html5实现的图片墙效果
2014/10/16 HTML / CSS
如何给HTML标签中的文本设置修饰线
2019/11/18 HTML / CSS
工程开工庆典邀请函
2014/02/01 职场文书
一年级语文上册复习计划
2015/01/17 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers