Python中的析构函数详解

当对象被销毁时调用析构函数。在python中,析构函数不像在c++中那么需要,因为python有一个垃圾收集器,可以自动处理内存管理。__del__()方法在python中称为析构函数方法。当对对象的所有引用都已被删除时即当一个对象被垃圾回收时,将调用该函数。

析构函数声明的语法:

def __del__(self):  # body of destructor

登录后复制

例1:下面是析构函数的简单示例。通过使用del关键字删除对象“obj”的所有引用,从而自动调用析构函数。

# Python program to illustrate destructor class Employee:       # Initializing     def __init__(self):         print('Employee created.')       # Deleting (Calling destructor)     def __del__(self):         print('Destructor called, Employee deleted.')   obj = Employee() del obj

登录后复制

输出:

Employee created.Destructor called, Employee deleted.

登录后复制

注意:析构函数是在程序结束后调用的,或者当对对象的所有引用都被删除时调用的。当引用计数为零时,而不是当对象超出范围时。

立即学习“Python免费学习笔记(深入)”;

例2:这个例子解释了上面提到的注意事项。这里,注意析构函数是在“Program End…”打印之后调用的。

# Python program to illustrate destructor   class Employee:       # Initializing      def __init__(self):         print('Employee created')       # Calling destructor     def __del__(self):         print("Destructor called")   def Create_obj():     print('Making Object...')     obj = Employee()     print('function end...')     return obj   print('Calling Create_obj() function...') obj = Create_obj() print('Program End...')

登录后复制

输出:

Calling Create_obj() function...Making Object...Employee createdfunction end...Program End...Destructor called

登录后复制

例3:现在,考虑下面的例子:

# Python program to illustrate destructor   class A:     def __init__(self, bb):         self.b = bb   class B:     def __init__(self):         self.a = A(self)     def __del__(self):         print("die")   def fun():     b = B()   fun()

登录后复制

输出:

die

登录后复制

在这个示例中,当函数fun()被调用时,它创建了一个B类实例,它将自身传递给A类,然后A类设置对B类的引用并产生循环引用。

通常,用于检测这些类型的循环引用的Python的垃圾收集器会将其删除,但在此示例中,使用自定义析构函数将此项标记为“uncollectable”(无法收集)。

简单地说,它不知道销毁对象的顺序,因此它会离开它们。因此,如果您的实例涉及循环引用,则只要应用程序运行,它们就会存在内存中。

相关推荐:《Python教程》

以上就是Python中的析构函数详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2533484.html

(0)
上一篇 2025年3月5日 21:14:18
下一篇 2025年3月5日 21:14:30

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 怎么找到黑客的联系方式?

    如果你想要找到黑客的联系方式,那么你可能面临以下难题:黑客往往会隐藏他们的身份,并且他们的联系方式很难被发现。php小编草莓在这里为你提供了一份指南,旨在帮助你找到黑客的联系方式。在本指南中,我们将介绍一些常见的黑客使用的联系方式,并提供一…

    2025年3月5日
    200
  • python小数的进位与舍去的介绍(附代码)

    本篇文章给大家带来的内容是关于python小数的进位与舍去的介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 一、基础知识准备 奇进偶舍,又称为四舍六入五成双规则、银行进位法(banker’s ro…

    编程技术 2025年3月5日
    000
  • python中lambda函数的用法介绍(附示例)

    本篇文章给大家带来的内容是关于python中lambda函数的用法介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 匿名函数lambda:是指一类无需定义标识符(函数名)的函数或子程序。lambda 函数可以接…

    编程技术 2025年3月5日
    200
  • Python 爬取张国荣最火的 8 首歌,60000 评论看完泪奔!

    昨天是 4 月 1 日。 每年的这一天, 一部分人搜索枯肠想尽办法整蛊, 一部分人感怀四月该很好,倘若你还在。 立即学习“Python免费学习笔记(深入)”; 甚至有人,用 AI 的方式来还原你。 但那终究不是你啊。 图片来源见水印 你走了…

    2025年3月5日 编程技术
    200
  • Python零基础新手入门小知识

    古话说得好,一年之计在于春,一日之计在于晨,今天本小编就要开始学习Python之旅,下文是我整理的有关Python的入门小知识,希望有小伙伴一同加入了解哦! 在学习之前,我们要先了解Python,才能在以后更好地运用它。 Python由Gu…

    2025年3月5日
    200
  • Python爬虫基础之网页组成解析

    当我们用浏览器访问网站时,每个网页的大不相同,你是否想过它为什么会呈现多种不同的样式呢?就让我们一起了解一下网页的基本组成、结构和节点等内容吧! 网页的组成 网页可以分为三大部分——HTML、CSS和JavaScript。如果把网页比作一个…

    2025年3月5日
    200
  • Python入门:Python的环境搭建(IDE)工具

    在Python 的学习过程少不了 Python环境开发I工具 。这些 Python 开发工具能够帮助开发者提高使用 Python 开发的效率。高效的代码编辑器或者 IDE 应该会提供插件,工具等能帮助开发者高效开发的特性。下面就随着小编一起…

    2025年3月5日
    200
  • 非常适合菜鸟练手的3道趣味Python题

    了解python的小伙伴都知道python虽然入门容易,但是涉及的知识超级多,而且技巧性很强!这些技巧就像锁链一样,需要一些勤加练习才能熟练掌握起来,把知识点掌握牢固!今天小编就为大家精选了3道趣味的python题目,大家一起活动手指,练起…

    2025年3月5日
    200
  • 趣味玩转——用python分析《三国演义》中的社交网络

    一直以来对自然语言处理和社交网络分析都很感兴趣,前者能帮助我们从文本中获得很多发现,而后者能够让我们对人们和各个事物之间普遍存在的网络般的联系有更多认识。当二者结合,又会有怎样的魔力呢?作为一个三国迷,我就有了这样的想法:能不能用文本处理的…

    2025年3月5日 编程技术
    200
  • 用Python搭建一个简单的代理池

    其实每次爬东西的时候,特怕IP被封,所以每次都要把时间延迟设置得长一点…这次用Python搭建一个简单的代理池。获取代理IP,然后验证其有效性。不过结果好像不是很理想,为什么西刺代理的高匿代理都能用???不是说免费代理不好使吗?…

    2025年3月5日 编程技术
    200

发表回复

登录后才能评论