Python的引用计数机制是如何工作的?

2026-05-16 09:000阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1365个文字,预计阅读时间需要6分钟。

Python的引用计数机制是如何工作的?

Python中的`__del__`方法,也被称为对象的终结者,是一个在对象即将被从内存中移除前被调用的方法。它不是用于从内存中删除对象的,而是用于执行清理工作的。具体来说,`__del__`方法通常用于释放对象所占用的资源,如关闭文件、网络连接等。

Python 中的 ​​__del__​​ 魔法方法,也被称为对象的终结者,是一个在对象即将被从内存中移除之前被调用的方法。它实际上并不做从内存中删除对象的工作,我们将在后面看到它是如何发生的。相反,这个方法是用来做任何在对象被移除前需要发生的清理工作。例如,关闭对象在创建时打开的任何文件。

在本节中,我们将使用下面这个类作为例子。

class MyNameClass:
def __init__(self, name):
self.name = name

def __del__(self):
print(f"Deleting {self.name}!")

在上面的例子中,我们已经定义了我们的类在初始化时接受一个名字的输入,当调用 finaliser 时,它会通过打印相关实例的名字让我们知道。这样,我们就可以了解到哪些对象被从内存中删除,以及何时被删除。

那么,CPython 什么时候会决定从内存中删除一个对象呢?有两种方式(从CPython 3.10 开始)会发生这种情况:引用计数和垃圾回收。

引用计数

如果我们在 Python 中有一个指向某个对象的指针,那就是对该对象的引用。对于一个给定的对象 a ,CPython 会跟踪有多少其他东西指向 a 。如果这个计数器达到零,就可以安全地从内存中删除这个对象,因为没有其他东西在使用它。让我们看一个例子。

阅读全文
标签:引用计数

本文共计1365个文字,预计阅读时间需要6分钟。

Python的引用计数机制是如何工作的?

Python中的`__del__`方法,也被称为对象的终结者,是一个在对象即将被从内存中移除前被调用的方法。它不是用于从内存中删除对象的,而是用于执行清理工作的。具体来说,`__del__`方法通常用于释放对象所占用的资源,如关闭文件、网络连接等。

Python 中的 ​​__del__​​ 魔法方法,也被称为对象的终结者,是一个在对象即将被从内存中移除之前被调用的方法。它实际上并不做从内存中删除对象的工作,我们将在后面看到它是如何发生的。相反,这个方法是用来做任何在对象被移除前需要发生的清理工作。例如,关闭对象在创建时打开的任何文件。

在本节中,我们将使用下面这个类作为例子。

class MyNameClass:
def __init__(self, name):
self.name = name

def __del__(self):
print(f"Deleting {self.name}!")

在上面的例子中,我们已经定义了我们的类在初始化时接受一个名字的输入,当调用 finaliser 时,它会通过打印相关实例的名字让我们知道。这样,我们就可以了解到哪些对象被从内存中删除,以及何时被删除。

那么,CPython 什么时候会决定从内存中删除一个对象呢?有两种方式(从CPython 3.10 开始)会发生这种情况:引用计数和垃圾回收。

引用计数

如果我们在 Python 中有一个指向某个对象的指针,那就是对该对象的引用。对于一个给定的对象 a ,CPython 会跟踪有多少其他东西指向 a 。如果这个计数器达到零,就可以安全地从内存中删除这个对象,因为没有其他东西在使用它。让我们看一个例子。

阅读全文
标签:引用计数