参考链接: Python的__name __(特殊变量)

1. 创建多个对象的时候触发__del__方法

Python解释器释放实例对象的时候,调用该对象的__del__方法

各个对象被被Python解释器释放对象的时候调用__del__方法

class Person(object):

def __init__(self,name):

self.name = name

def __del__(self):

print("实例对象:%s"%self.name,id(self))

print("python解释器开始回收%s对象了" % self.name)

print("类对象",id(Person))

zhangsan  = Person("张三")

print("实例对象张三:",id(zhangsan))

print("------------")

lisi  = Person("李四")

print("实例对象李四:",id(lisi))

执行效果

2. 使用del删除引用时的调用情况

当使用del 把内存的所有应用删除,立刻调用__del__方法

执行效果

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

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

3. 创建多个实例对象并且删除

import time

class Animal(object):

# 初始化方法

# 创建完对象后会自动被调用

def __init__(self, name):

print('__init__方法被调用')

self.__name = name

# 析构方法

# 当对象被删除时,会自动被调用

def __del__(self):

print("__del__方法被调用")

print("%s对象马上被干掉了..."%self.__name)

# 创建对象

dog = Animal("哈皮狗")

# 删除对象

del dog

cat = Animal("波斯猫")

cat2 = cat

cat3 = cat

print("---马上 删除cat对象")

del cat

print("---马上 删除cat2对象")

del cat2

print("---马上 删除cat3对象")

del cat3

print("程序2秒钟后结束")

time.sleep(2)

结果:

4. 测量对应引用个数

5. 小结

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

当使用del删除变量指向的对象时,如果对象的引用计数不会1,比如3,那么此时只会让这个引用计数减1,即变为2,当再次调用del时,变为1,如果再调用1次del,此时会真的把对象进行删除

注意

del xxx 不会主动调用__del__方法,只有引用计数 == 0时,__del__()才会被执行,并且定义了__del_()的实例无法被Python的循环垃圾收集器收集,所以尽量不要自定义__del__()。一般情况下,__del__() 不会破坏垃圾处理器。

[转载] python的__del__()方法相关推荐

  1. python的__del__()方法

    创建对象后,Python解释器默认调用__init__()方法.当删除一个对象时,Python解释器也会默认调用一个方法,这个方法为__del__()方法.在Python中,对于开发者来说很少会直接销 ...

  2. [转载] Python 3 集合方法 remove( )

    参考链接: Python 集合set remove() Python 3 集合方法 remove( ) Python 3.8.5 语法格式: set.remove(elem) 描述: 从集合中移除元素 ...

  3. [转载] Python dict.keys方法

    参考链接: Python字典keys() 目录 描述 语法 使用示例 注意事项 函数返回的是一个可迭代序列,而不是列表 描述 dict.keys()方法是Python的字典方法,它将字典中的所有键组成 ...

  4. [转载] Python str title()方法

    参考链接: Python 字符串String title 方法 目录 描述 语法 参数 返回值 使用示例 注意事项 1. 当字符串中的每个单词首字符本身就是大写 2. 当"单词"的 ...

  5. [转载] Python time sleep()方法如何使用?

    参考链接: Python sleep() 转载自:http://www.runoob.com/python/att-time-sleep.html 转载自:https://blog.csdn.net/ ...

  6. [转载] Python List index方法

    参考链接: Python list index() Python列表的index方法,[elements].index(element),求取元素element在列表中第一次出现的索引. list_1 ...

  7. [转载] Python Set intersection() 方法

    参考链接: Python Set intersection() 描述 intersection() 方法用于返回两个或更多集合中都包含的元素,即交集. 语法 intersection() 方法语法: ...

  8. [转载] Python List index()方法

    参考链接: Python list | index 描述  index() 函数用于从列表中找出某个值第一个匹配项的索引位置.  语法  index()方法语法:  list.index(obj)  ...

  9. [转载] python字符串表示方法_python字符串使用方法归纳

    参考链接: Python字符串| splitlines capitalize() 把字符串的第一个字符改为大写 casefold() 把整个字符串的所有字符改为小写 center(width) 将字符 ...

最新文章

  1. Arcgis10.2安装与解决 [转载自麻辣GIS]
  2. array.slice_Ruby中带有示例的Array.slice()方法
  3. MySQL 集群 3副本,Kubernetes经典实践——运行MySQL多副本集群
  4. 网络流 poj 2195
  5. 英国python工资_在伦敦金融城当数据分析师-Python篇
  6. golang 数据一   (字符串、数组和数组指针)
  7. R与Python手牵手:数据科学导论系列(包的载入)
  8. python方差分析_R语言方差分析ANOVA
  9. 广义表存储结构图的绘制
  10. com.jcraft.jsch.JSchException: Algorithm negotiation fail 异常解决
  11. mysql tidb 删除延迟_TiDB DM踩坑实践总结
  12. 密钥文件snk 、AssemblyInfo.cs
  13. 1553B 协议详解
  14. php sybase存储过,SYBASE存储过程详解
  15. 关于启动 vue 项目出现 98% after emitting CopyPlugin 问题的出现
  16. 微信小程序截屏保存图片
  17. (附源码)springboot车辆管理系统 毕业设计031034
  18. 隐私协议授权访问的实现
  19. 直播系统定制开发——海量用户实时消息系统架构演进实践
  20. html给table加外边框,html如何给table表单加边框

热门文章

  1. python2中的print语句可以不用小括号。_Python 2.7终结于7个月后,这是你需要了解的3.X炫酷新特性...
  2. 需要多少次找出较轻的小球
  3. Linux 操作系统(I)
  4. redis主从复制_Redis 的主从复制(Master/Slave)
  5. 文件摆渡是什么意思_小白学炒股:除权、填权、贴权是个什么东东?
  6. LeetCode解题思路—双指针模式
  7. 试题16 回文数字(5位或6位)
  8. [PyTorch] reverse the normalization
  9. 向量-创建数组-linspace/logspace函数
  10. 接收机端口电压dBuV如何转化为功率dBmW