码迷,mamicode.com
首页 > 其他好文 > 详细

83.魔法方法__del__()

时间:2020-05-11 09:16:24      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:col   __del__   自动   nbsp   print   删除对象   %s   span   ida   

魔法方法__del__()

创建对象后,python解释器默认调用__init__()方法;

当删除对象时,python解释器也会默认调用一个方法,这个方法为__del__()方法

class Hero(object):

    # 初始化方法
    # 创建完对象后会自动被调用
    def __init__(self, name):
        print(__init__方法被调用)
        self.name = name

    # 当对象被删除时,会自动被调用
    def __del__(self):
        print("__del__方法被调用")
        print("%s 被 GM 干掉了..." % self.name)


# 创建对象
taidamier = Hero("泰达米尔")

# 删除对象
print("%d 被删除1次" % id(taidamier))
del(taidamier)


print("--" * 10)


gailun = Hero("盖伦")
gailun1 = gailun
gailun2 = gailun

print("%d 被删除1次" % id(gailun))
del(gailun)

print("%d 被删除1次" % id(gailun1))
del(gailun1)

print("%d 被删除1次" % id(gailun2))
del(gailun2)

总结

  • 当有变量保存了一个对象的引用时,此对象的引用计数就会加1;

  • 当使用del() 删除变量指向的对象时,则会减少对象的引用计数。如果对象的引用计数不为1,那么会让这个对象的引用计数减1,当对象的引用计数为0的时候,则对象才会被真正删除(内存被回收)。

 

83.魔法方法__del__()

标签:col   __del__   自动   nbsp   print   删除对象   %s   span   ida   

原文地址:https://www.cnblogs.com/kangwenju/p/12866590.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!