2016-08-03 60 views
3

在Java中,使用close()方法通过移除作用域对象来释放资源。我很困惑这是什么样的Python等价物?什么是Java中的close()的Python等价物?

  • Python的垃圾回收器会自动执行此操作吗?
  • 是否del方法?
  • 我应该使用with声明吗?

任何帮助将不胜感激。

编辑:我的目标是在需要时明确删除类对象,而不是文件对象。

+0

http://stackoverflow.com/questions/19747371/python-exit-commands-why-so-many-and-when-should-each-be-used do this help help? – AgataB

+0

@AgataB不是真的 – Sajid

+0

你有具体的用例需要吗?你能详细说明吗? Python的使用通常不会涉及手动清零实例(您称之为类对象)。 ** weakref **可能有兴趣,以避免他们坚持。 **与**是**不是**适当的构造,因为它在**实例的上下文中操作**,旨在释放由实例持有的**资源**。我从来没有见过任何认真编写的Python代码直接使用** gc ** - 并不是说​​它永远不应该完成,但它是一个很好的理由。 –

回答

0

我应该使用with语句吗?

是,根据the documentation

它与文件对象打交道时使用关键字用好的做法。这有一个好处,就是文件在套件结束后可以正常关闭,即使在路上出现异常。它也比编写等效的try-finally块短得多:

0

你会找到你的答案here:在你的代码之前放置gc.collect()。

+0

这是否也会删除未使用的类对象? – Sajid

+0

为此,下面的讨论可能是有趣的:http://stackoverflow.com/questions/693070/how-can-you-find-unused-functions-in-python-code。 – datahero

+0

看来你需要使用额外的工具(pyflakes和秃鹫)。 – datahero

0

ICart的评论适用于许多不同的情况。但是,关于一般对象的创建和处理,我认为this other thread提供了python处理其对象(引用计数)以及垃圾收集进来的相当好的解释。

相关问题