После проверки много раз, я нашел непоследовательную информацию о теме.Python __del__ не работает как деструктор?
В некотором случае я обнаружил, что __init__ and __del__
являются эквивалентом питона для конструкторов и деструкторов. Это похоже на __init__
, так как я вижу, что он называется при создании класса; но __del__
никогда не вызывается, когда программа заканчивается.
В других случаях я обнаружил, что __del__
является плохим, и вы должны явно освободить все от руки.
Теперь проблема: что это? Поскольку использование класса unittest.TestCase, когда я вызываю __del__
, он никогда не вызывается. К сожалению, я не могу использовать разрыв, потому что мне нужно начать процесс до того, как начнутся тесты, и закончить его, как только я закончил с тестами
@DYZ CPython использует подсчет ссылок, а не сбор мусора, поэтому вы можете вообще рассчитывать на то, что освобождается после того, как всякая ссылка на него ушла. Другие версии Python могут работать по-разному, конечно. –
@MarkRansom Да, вы правы. – DyZ
Что вы подразумеваете под «когда я называю' __del__' он никогда не назовешь »? Как вы это называете? Этот метод (как и любой другой метод, имя которого начинается с '__'), никогда не следует вызывать вручную. Он вызывается автоматически при исчезновении всех ссылок на объект. В частности, когда вы выполняете оператор 'del'. – DyZ