2016-08-03 2 views
3

В Java метод close() освобождает ресурсы, удаляя объекты области. Я смущен, что такое эквивалент Python для этого?Что такое эквивалент Python close() в Java?

  • Содержит ли сборщик мусора Python это автоматически?
  • Это метод del?
  • Должен ли я использовать заявление with?

Любая помощь будет оценена по достоинству.

Редактировать: Моя цель - явно удалить объекты класса по желанию, а не объекты файлов.

+0

http://stackoverflow.com/questions/19747371/python-exit-commands-why-so-many-and-when-should-each-be-used помогает ли это? – AgataB

+0

@AgataB Не действительно – Sajid

+0

У вас есть конкретный прецедент, который требует этого? Можете ли вы рассказать об этом? Использование Python обычно не включает в себя обнуление экземпляров (то, что вы называете объектами класса) вручную. ** weakref ** может представлять интерес, чтобы избежать их прилипания. ** с ** ** не является соответствующей конструкцией, потому что она работает ** в контексте ** экземпляра - она ​​предназначена для освобождения ** ресурсов **, хранящихся в экземпляре. Я никогда не видел, чтобы какой-либо серьезно написанный код Python использовал ** gc ** напрямую - не сказать, что это никогда не должно быть сделано, но это хаки, wo очень хорошая причина. –

ответ

0

Должен ли я использовать оператор with?

Да, согласно the documentation:

Это хорошая практика, чтобы использовать с ключевым словом при работе с файловыми объектами. Это имеет то преимущество, что файл правильно закрыт после завершения его набора, даже если в пути возникло исключение. Кроме того, гораздо короче, чем писать эквивалентные примерки, наконец, блоки:

0

Вы найдете ответ на свой вопрос here: Место GC.Collect() перед кодом.

+0

Это также удаляет неиспользуемые объекты класса? – Sajid

+0

Для этого может быть интересно следующее обсуждение: http://stackoverflow.com/questions/693070/how-can-you-find-unused-functions-in-python-code. – datahero

+0

Кажется, что вам нужно будет использовать дополнительные инструменты (pyflakes и vulture). – datahero

0

Комментарий ICart для разных ситуаций. Однако, что касается создания и удаления объектов в целом, я думаю, что this other thread дает довольно хорошее объяснение того, как python обрабатывает свои объекты (количество ссылок), и где происходит сбор мусора.

Смежные вопросы