鱼C论坛

 找回密码
 立即注册
查看: 790|回复: 9

[已解决]第39讲有关类的问题

[复制链接]
发表于 2020-2-19 13:01:16 | 显示全部楼层 |阅读模式
3鱼币


class C:
        count = 0
        
        def __init__(self):
                C.count += 1

        def __del__(self):
                C.count -= 1
a = C()
b = C()
c = C()
print(C.count)
用spyder得到的是0,用vscode就能得到3,这是为什么,求大佬解答
最佳答案
2020-2-19 13:01:17
kylin121380 发表于 2020-2-19 15:52
为什么spyder会这样啊,哪边出了问题

原因是你第一次运行的时间,a,b,c不存在,只执行_init_函数,_del_函数没有调用,但后面再次运行的时候,两个都执行了。详情请运行所附代码。
  1. class C:
  2.     count=0
  3.     def __init__(self):
  4.         C.count +=1
  5.         print('+')
  6.         print(C.count)
  7.     def __del__(self):
  8.         C.count -=1
  9.         print('-')
  10.         print(C.count)
  11. a = C()
  12. b = C()
  13. c = C()
  14. print(C.count)
复制代码

最佳答案

查看完整内容

原因是你第一次运行的时间,a,b,c不存在,只执行_init_函数,_del_函数没有调用,但后面再次运行的时候,两个都执行了。详情请运行所附代码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-19 13:01:17 | 显示全部楼层    本楼为最佳答案   
kylin121380 发表于 2020-2-19 15:52
为什么spyder会这样啊,哪边出了问题

原因是你第一次运行的时间,a,b,c不存在,只执行_init_函数,_del_函数没有调用,但后面再次运行的时候,两个都执行了。详情请运行所附代码。
  1. class C:
  2.     count=0
  3.     def __init__(self):
  4.         C.count +=1
  5.         print('+')
  6.         print(C.count)
  7.     def __del__(self):
  8.         C.count -=1
  9.         print('-')
  10.         print(C.count)
  11. a = C()
  12. b = C()
  13. c = C()
  14. print(C.count)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-19 13:16:29 | 显示全部楼层
确定不是操作有误吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-19 14:00:47 | 显示全部楼层
zltzlt 发表于 2020-2-19 13:16
确定不是操作有误吗?

打开后第一次运行可以,之后就变成0了
123.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-19 14:15:23 From FishC Mobile | 显示全部楼层
kylin121380 发表于 2020-2-19 14:00
打开后第一次运行可以,之后就变成0了

我觉得目测得0才是王道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-19 14:26:26 | 显示全部楼层
wp231957 发表于 2020-2-19 14:15
我觉得目测得0才是王道

用idle就是正常的。求解啊
321.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-19 15:34:11 | 显示全部楼层
kylin121380 发表于 2020-2-19 14:26
用idle就是正常的。求解啊

用原配(IDLE或者命令行)解释运行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-19 15:52:15 | 显示全部楼层
qiuyouzhi 发表于 2020-2-19 15:34
用原配(IDLE或者命令行)解释运行

为什么spyder会这样啊,哪边出了问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-20 11:18:32 | 显示全部楼层
ouyunfu 发表于 2020-2-19 19:21
原因是你第一次运行的时间,a,b,c不存在,只执行_init_函数,_del_函数没有调用,但后面再次运行的时候, ...

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-21 11:11:02 | 显示全部楼层
应该是spyder的问题,把选项调到第二个就行了
123.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 20:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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