Вызов del
по имени - это то, что вы никогда не должны делать. Вызов del
не гарантирует ничего полезного о том, что произойдет с базовым объектом. Вы никогда не должны зависеть от метода __del__
в том, что вам нужно.
del
избавляется только от одной ссылки на объект, что может сбивать с толку, когда вы, возможно, сделали больше, не задумываясь. Следовательно, del
полезен для очистки пространства имен, а не для управления временем жизни объектов, а это даже не здорово для этого - правильный способ управлять временем жизни имени - поместить его в функцию и сделайте так, чтобы он вышел из области видимости или поместите его в блок with.
Вам необходимо оснастить BigHash
возможностью явного снятия блокировки , методом release
, unlock
или close
. Если вы хотите использовать это с менеджером контекста (with
), вы можете определить __exit__
, который будет вызываться в предсказуемое и полезное время.