我们可以强制执行析构函数del,通常只是让垃圾收集器完成它的工作,但是如果我们在Python中定义一个类析构函数,是否可以保证对每个实例化的对象执行它?
简短的回答:不。
更长的答案:__del__实际上并不是 C++ 意义上的析构函数,您可能不想使用它。
相反,如果您需要清理,您可能应该将对象放入上下文管理器(通过编写__enter__和__exit__方法)并在with语句中使用它们,和/或为它们提供close需要显式调用的方法。Python 中的大多数类和广泛使用的库都需要释放外部资源(通常通过__enter__returnself和__exit__call self.close())。
通过垃圾收集,通常不需要像 C++ 中那样释放在__init__或中分配的任何内存__new__,因为它将自动收集。
该方法有用途__del__,但很少见。
| 归档时间: |
|
| 查看次数: |
879 次 |
| 最近记录: |