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读写Json涉及到中文的处理方法
Sep 12 Python
高效测试用例组织算法pairwise之Python实现方法
Jul 19 Python
Python中顺序表的实现简单代码分享
Jan 09 Python
tensorflow 输出权重到csv或txt的实例
Jun 14 Python
python简易远程控制单线程版
Jun 20 Python
深入了解和应用Python 装饰器 @decorator
Apr 02 Python
Python中Numpy mat的使用详解
May 24 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
Feb 07 Python
Python基于pyjnius库实现访问java类
Jul 31 Python
python读取xml文件方法解析
Aug 04 Python
python实现杨辉三角的几种方法代码实例
Mar 02 Python
变长双向rnn的正确使用姿势教学
May 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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
php设计模式 Bridge (桥接模式)
2011/06/26 PHP
php使用json_encode对变量json编码
2014/04/07 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
PHP去除空数组且数组键名重置的讲解
2019/02/28 PHP
php中错误处理操作实例分析
2019/08/23 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
PHP加MySQL消息队列深入理解
2021/02/27 PHP
javascript数组使用调用方法汇总
2007/12/08 Javascript
jQuery源码分析之Event事件分析
2010/06/07 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
2016/08/11 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
2016/08/18 Javascript
微信小程序实现登录页云层漂浮的动画效果
2017/05/05 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
详解VUE 数组更新
2017/12/16 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
2019/11/19 Javascript
javascript设计模式 ? 原型模式原理与应用实例分析
2020/04/10 Javascript
[01:48:04]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第一场 2月7日
2021/03/11 DOTA
Python fileinput模块使用实例
2015/05/28 Python
python实现自动登录人人网并采集信息的方法
2015/06/28 Python
Python tkinter事件高级用法实例
2018/01/31 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
python推导式的使用方法实例
2021/02/28 Python
美国知名女性服饰品牌:New York & Company
2017/03/23 全球购物
Nike香港官网:Nike HK
2019/03/23 全球购物
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
门卫岗位职责说明书
2014/08/18 职场文书
个人房屋转让协议书范本
2014/10/26 职场文书
2014年服务员个人工作总结
2014/12/23 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
基于Python实现将列表数据生成折线图
2022/03/23 Python