Я делаю вещи в основном на C++, где метод деструктора действительно предназначен для уничтожения приобретенного ресурса. Недавно я начал с python (это действительно весело и фантастично), и я пришел, чтобы узнать, что он имеет GC как java. Таким образом, нет особого акцента на владение объектами (строительство и разрушение).Является ли __del__ действительно деструктором?
Насколько я понял, метод __init__()
имеет больше смысла для меня в python, чем для ruby тоже, но метод __del__()
, действительно ли нам нужно реализовать эту встроенную функцию в нашем классе? Будет ли у моего класса что-то недостающее, если я пропущу __del__()
? Один сценарий, который я мог увидеть, полезен, если я хочу что-то регистрировать при уничтожении объекта. Есть ли что-то другое, кроме этого?
Нет. Вы почти никогда не должны реализовывать '__del__'. –
http://stackoverflow.com/a/2433847/2681632 –
Вы * почти никогда не хотите реализовать '__del__'. Классы, которые предоставляют пользовательский '__del__', должны обрабатываться GC при работе с циклами (потому что' __del__' следует называть ровно один раз), и в некоторых случаях GC не сможет их собрать [хотя от python3.4 + это было улучшено довольно много]. Очень мало случаев, когда это хорошая идея для его реализации. – Bakuriu