• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

面向对象–魔法方法:__del__

python 搞java代码 3年前 (2022-05-21) 15次浏览 已收录 0个评论

__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的时候,则对象才会被真正删除(内存被回收)


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:面向对象–魔法方法:__del__
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址