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实现基于两张图片生成圆角图标效果的方法
Mar 26 Python
利用Opencv中Houghline方法实现直线检测
Feb 11 Python
将TensorFlow的模型网络导出为单个文件的方法
Apr 23 Python
python复制文件到指定目录的实例
Apr 27 Python
python 划分数据集为训练集和测试集的方法
Dec 11 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
Mar 30 Python
Python闭包和装饰器用法实例详解
May 22 Python
使用python爬取微博数据打造一颗“心”
Jun 28 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
Aug 30 Python
python代码打印100-999之间的回文数示例
Nov 24 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
Django之choices选项和富文本编辑器的使用详解
Apr 01 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
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
基于empty函数的判断详解
2013/06/17 PHP
跟我学Laravel之请求与输入
2014/10/15 PHP
php读取flash文件高宽帧数背景颜色的方法
2015/01/06 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
2017/05/02 PHP
form自动提交实例讲解
2017/07/10 PHP
PHP实现登录注册之BootStrap表单功能
2017/09/03 PHP
PHP实现的微信公众号扫码模拟登录功能示例
2019/05/30 PHP
js中根据字数截取字符串,不能截断url
2012/01/12 Javascript
详解javascript遍历方式
2015/11/11 Javascript
jquery+css实现动感的图片切换效果
2015/11/25 Javascript
JavaScript中获取HTML元素值的三种方法
2016/06/20 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
2017/04/07 Javascript
Webpack中css-loader和less-loader的使用教程
2017/04/27 Javascript
Vue.js添加组件操作示例
2018/06/13 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
微信小程序云开发之云函数详解
2019/05/16 Javascript
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
Python实现一个简单的MySQL类
2015/01/07 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
2017/05/24 Python
对python中的iter()函数与next()函数详解
2018/10/18 Python
python程序变成软件的实操方法
2019/06/24 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
python Django的web开发实例(入门)
2019/07/31 Python
python 二维矩阵转三维矩阵示例
2019/11/30 Python
python 根据列表批量下载网易云音乐的免费音乐
2020/12/03 Python
Ivory Isle Designs美国/加拿大:婚礼和活动文具公司
2018/08/21 全球购物
俄罗斯玩具、儿童用品、儿童服装和鞋子网上商店:MyToys.ru
2019/10/14 全球购物
在线实验室测试:HealthLabs.com
2020/05/03 全球购物
质检员岗位职责
2013/12/17 职场文书
李开复演讲稿
2014/05/24 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
幼儿园个人师德总结
2015/02/06 职场文书
大学生学年个人总结
2015/02/15 职场文书
初中生活随笔
2015/08/15 职场文书
mysql5.7使用binlog 恢复数据的方法
2021/06/03 MySQL