Ich mache Dinge meist in C++, wo die Destruktor-Methode wirklich für die Zerstörung einer erworbenen Ressource gedacht ist. Vor kurzem begann ich mit Python (was wirklich ein Spaß und fantastisch ist), und ich kam zu lernen, es hat GC wie Java. Daher gibt es keine starke Betonung auf Objektbesitz (Konstruktion und Zerstörung).Ist __del__ wirklich ein Destruktor?
Soweit ich gelernt habe, die __init__()
Methode mehr Sinn für mich in Python macht, als es auch für Ruby tut, aber die __del__()
Methode, brauchen wir implementieren diese integrierte Funktion in unserer Klasse wirklich? Wird meiner Klasse etwas fehlen, wenn ich __del__()
vermisse? Das eine Szenario, das ich sehen konnte __del__()
nützlich ist, wenn ich etwas beim Löschen eines Objekts protokollieren möchte. Gibt es etwas anderes als das?
Nein. Sie sollten fast nie '__del__' implementieren. –
http://StackOverflow.com/a/2433847/2681632 –
Sie * fast nie * möchten "__del__" implementieren. Klassen, die ein benutzerdefiniertes '__del__' bereitstellen, müssen vom GC auf besondere Weise behandelt werden, wenn es um Zyklen geht (weil' __del__' genau einmal aufgerufen werden muss) und in einigen Fällen kann der GC sie nicht sammeln von python3.4 + das wurde ziemlich verbessert]. Es gibt nur sehr wenige Fälle, in denen eine Implementierung sinnvoll ist. – Bakuriu