Tag: деструктор

Python threading.Thread, области и сбор мусора

Скажем, я получаю от threading.Thread: from threading import Thread class Worker(Thread): def start(self): self.running = True Thread.start(self) def terminate(self): self.running = False self.join() def run(self): import time while self.running: print "running" time.sleep(1) Любой экземпляр этого класса с запущенным потоком должен иметь поток, который активно завершается, прежде чем он сможет собрать мусор (поток содержит ссылку). Так […]

Python, как обеспечить, чтобы метод __del __ () объекта вызывался до того, как модуль умирает?

Ранее сегодня я задал этот вопрос о __del__() объекта, который использует импортированный модуль. Проблема заключалась в том, что __del__() хочет использовать модуль os , но иногда (не всегда) модуль уже удален. Мне сказали, что когда программа Python завершается, порядок удаления объектов и модулей может быть случайным и не определен. Однако для моего приложения мне действительно […]

Деструкторы Python в классах нового и старого стиля

Я пытаюсь понять, почему разрушение объекта работает по-разному в классах нового стиля по сравнению со старыми стилями. class Wrapper(): class Inner(object): def __del__(self): print 'Inner destructor' innerInstance = Inner() def __del__(self): print 'Wrapper destructor' if __name__ == '__main__': x = Wrapper() при выходе это приведет к выводу: Wrapper destructor Inner destructor однако, если я использую […]

Сколько раз можно вызывать `__del__` для каждого объекта в Python?

Я видел некоторый код, где __del__ явно вызывался на объект, который мне __del__ любопытным, поэтому я попытался немного поиграть с ним, чтобы понять, как он работает. Я попробовал следующий код (я понимаю, что использование __del__ само по себе является потенциально плохим, но я просто пытаюсь называть себя здесь): class A: def __init__(self, b): self.a = […]

del MyClass не вызывает объект .__ del __ ()

У меня есть класс, который открывает файл для записи. В моем деструкторе я вызываю функцию, которая закрывает файл: class MyClass: def __del__(self): self.close() def close(self): if self.__fileHandle__ is not None: self.__fileHandle__.close() но когда я удаляю объект с кодом вроде: myobj = MyClass() myobj.open() del myobj если я попытаюсь восстановить объект, я получаю ошибку значения: ValueError: […]

Почему Python уничтожает переменные класса перед объектами?

Я понимаю, что Python не гарантирует порядок уничтожения объектов в конце программы, или даже это произойдет. Поэтому я понимаю, что деструктор класса не может полагаться на глобальные переменные, включая другие модули. Но я бы подумал, что объекты класса должны быть уничтожены до того, как класс будет уничтожен. Очевидно нет: class A(object): count = 0 def […]

Является ли использование __del __ () для очистки в python ненадежным?

Я читал о различных способах очистки объектов в Python, и я наткнулся на эти вопросы ( 1 , 2 ), которые в основном говорят, что очистка с использованием __del__() ненадежна и следует избегать следующего кода: def __init__(self): rc.open() def __del__(self): rc.close() Проблема в том, что я использую именно этот код, и я не могу воспроизвести […]

В python 2.x я должен вызвать объект .__ del__?

В Python 3.x все классы являются подклассами object . В 2.x вам нужно явно указать class MyClass(object) . И, поскольку я пытаюсь написать как можно больше кода совместимости с 3.x, я являюсь object подкласса. В моей программе я использую метод __del__ , и я хотел знать, должен ли я называть object.__del__(self) , или если это […]

Могут ли обратные вызовы `weakref` заменять` __del__`?

Есть ли препятствие, которое препятствует тому, чтобы weakref выполнял все, что __del__ делает, но с гораздо более сильными гарантиями (например, finalize гарантии того, что вызов будет сделан до выхода переводчика, а порядок вызовов будет определен и т. Д.)? Похоже, что в далеком прошлом считалось, что weakref в конечном итоге приведет к удалению __del__ с языка. […]

Варианты использования для __del__

Каковы варианты использования в python 3 написания пользовательского метода __del__ или использования одного из stdlib 1 ? То есть, в каком сценарии это разумно безопасно, и может сделать что-то, что трудно сделать без него? По многим причинам ( 1 2 3 4 5 6 ) обычно рекомендуется избегать __del__ и вместо этого использовать контекстные менеджеры […]

Interesting Posts for Van-Lav

tweepy останавливается через несколько часов

Как chmod-файлы в python setup.py?

Проблемы с доступом к порту 5000 в Vagrant

Python eval: все еще опасно, если я отключу встроенные функции и доступ к атрибутам?

Класс Python, определенный в том же файле, что и другой класс, – как вы получаете доступ к тому, который указан позже в файле?

Вызов rm из подпроцесса с использованием подстановочных знаков не удаляет файлы

Как заставить PyScripter работать? Говорит, что не может найти python26.dll

Как установить png-модуль в python

Полнотекстовая поисковая система для Python

Python reportlab вставка изображения в таблицу

Как извлечь данные с динамических сайтов, таких как Flipkart, используя селен и Scrapy?

Как печатать только содержимое строки справки определенного аргумента ArgParse

Эффективное создание дополнительных столбцов в pandas DataFrame с использованием .map ()

Любые недостатки для хранения целого числа в виде строки в базе данных?

В чем разница между методом mro и атрибутом __mro__ класса?

Python - лучший язык программирования в мире.