前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python - 面向对象编程 - __del__() 析构方法

Python - 面向对象编程 - __del__() 析构方法

作者头像
小菠萝测试笔记
发布2021-09-07 15:29:12
4320
发布2021-09-07 15:29:12
举报

del 语句

Python 提供了 del 语句用于删除不再使用的变量

语法
代码语言:javascript
复制
del 表达式
删除变量的栗子
代码语言:javascript
复制
var = "hello"
del var
print(var)


# 输出结果
    print(var)
NameError: name 'var' is not defined

变量已经被删除了,所以无法访问变量

类的析构方法

  • Python 提供了一种机制使得对象被删除前能够得到通知
  • 对象被删除时,如果该对象拥有名为 的方法,该方法在删除前被调用,该方法又被称为析构方法

__del__

语法
代码语言:javascript
复制
class 类:
    def __del__(self):
        self.属性
重点
  • 析构方法是对象在被垃圾回收的时候起作用的一个方法
  • 它的执行一般也就意味着对象不能够继续引用, 回收内存
  • Python 建议不要在对象销毁时做任何事情,因为对象销毁的时间难以确定
  • 所以析构方法一般无须定义,日哦长使用时无需关心内存的分配和释放,因为此工作都是交给 Python 解释器来执行
  • 一句话:析构方法的调用是由解释器在进行垃圾回收时自动触发执行的
栗子一

当对象在某个作用域中调用完毕,在跳出其作用域的同时析构方法会自动被调用,这样可以释放内存空间

代码语言:javascript
复制
# 析构方法
class PoloBlog:
    # 构造方法
    def __init__(self):
        print("自动调用构造方法")

    def __del__(self):
        print("自动调用析构方法,释放内存")


blog = PoloBlog()
print("最后一句代码")


# 输出结果
自动调用构造方法
最后一句代码
自动调用析构方法,释放内存
栗子二

主动 del 对象

代码语言:javascript
复制
# 析构方法
class PoloBlog:
    # 构造方法
    def __init__(self):
        print("自动调用构造方法")

    def __del__(self):
        print("自动调用析构方法,释放内存")


blog = PoloBlog()
# 主动删除对象
del blog
print("最后一句代码")


# 输出结果
自动调用构造方法
自动调用析构方法,释放内存
最后一句代码 
  • 使用 del 语句,相当于主动调用对象的析构方法,会立即删除对象,并回收内存
  • 通常是删除临时的对象,对那些长期占用内存的临时对象进行回收
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-08-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • del 语句
    • 语法
      • 删除变量的栗子
      • 类的析构方法
        • 语法
          • 重点
            • 栗子一
              • 栗子二
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档