__del__()
方法
创建对象后,python解释器默认调用__init__()
方法;
当删除对象时,python解释器也会默认调用一个方法,这个方法为__del__()
方法
<code class="lang-python"><span class="hljs-class"><span class="hljs-keyword">class <span class="hljs-title">Hero<span class="hljs-params">(object): <span class="hljs-comment"># 初始化方法 <span class="hljs-comment"># 创建完对象后会自动被调用 <span class="hljs-function"><span class="hljs-keyword">def <span class="hljs-title">__init__<span class="hljs-params">(self, name): print(<span class="hljs-string">"__init__方法被调用") self.name = name <span class="hljs-comment"># 当对象被删除时,会自动被调用 <span class="hljs-function"><span class="hljs-keyword">def <span class="hljs-title">__del__<span class="hljs-params">(self): print(<span class="hljs-string">"__del__方法被调用") print(<span class="hljs-string">"%s 被 GM 干掉了..." % self.name) <span class="hljs-comment"># 创建对象 taidamier = Hero(<span class="hljs-string">"泰达米尔") <span class="hljs-comment"># 删除对象 print(<span class="hljs-string">"%d 被删除1次" % id(taidamier)) <span class="hljs-keyword">del(taidamier) print(<span class="hljs-string">"--" * <span class="hljs-number">10) gailun = Hero(<span class="hljs-string">"盖伦") gailun1 = gailun gailun2 = gailun print(<span class="hljs-string">"%d 被删除1次" % id(gailun)) <span class="hljs-keyword">del(gailun) print(<span class="hljs-string">"%d 被删除1次" % id(gailun1)) <span class="hljs-keyword">del(gailun1) print(<span class="hljs-string">"%d 被删除1次" % id(gailun2)) <span class="hljs-keyword">del(gailun2) </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code>
www#gaodaima.com来源gaodai#ma#com搞@@代~&码网搞代码
总结
-
当有变量保存了一个对象的引用时,此对象的引用计数就会加1;
-
当使用del() 删除变量指向的对象时,则会减少对象的引用计数。如果对象的引用计数不为1,那么会让这个对象的引用计数减1,当对象的引用计数为0的时候,则对象才会被真正删除(内存被回收)