鱼C论坛

 找回密码
 立即注册
查看: 2399|回复: 4

关于类对象的问题

[复制链接]
发表于 2017-3-17 17:26:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
根据http://bbs.fishc.com/thread-51050-1-1.html 这一讲的作业写了一个代码,用类属性跟踪生成了多少个实例对象:

  1. class A:
  2.     count=0
  3.     def __init__(self):
  4.         A.count +=1
  5.         print('进行了一次实例化')
  6.     def __del__(self):
  7.         A.count -=1
  8.         print('成功删除实例')
复制代码


>>> a=A()
进行了一次实例化
>>> b=A()
进行了一次实例化
>>> a=A()
进行了一次实例化
成功删除实例


为什么在第二次给a进行实例化时会自动执行del?
如果说按照操作顺序,由于在内存中已经有了名字为a的实例了,不也应该是先删除原有的,而后再进行初始化,那应该先弹出‘成功删除实例’,后弹出‘进行了一次实例化’,请各位高手指点一下~!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-3-17 17:39:48 | 显示全部楼层
因为原来的那个a先要删掉。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-17 18:25:50 | 显示全部楼层
ooxx7788 发表于 2017-3-17 17:39
因为原来的那个a先要删掉。

关键是我第二次弹出的先是生成实例化,然后再删除。。。说明说同时存在了两个同名的实例化,然后系统只能删掉一前个,不知道是不是这样个解释
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-17 19:34:28 | 显示全部楼层
早起的达仙僧 发表于 2017-3-17 18:25
关键是我第二次弹出的先是生成实例化,然后再删除。。。说明说同时存在了两个同名的实例化,然后系统只能 ...

如果你从机器的角度考虑这个问题,情况应该是:
先提出了init以后,然后触发了前一个的del啊,所以先出init的语句。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-17 19:41:57 | 显示全部楼层
其实意思就是
你先进行了两次实例化
然后重新了一个 a 的实例化
所以要先删除第一次的 a
然后实例化新的 a
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-25 23:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表