鱼C论坛

 找回密码
 立即注册
查看: 2393|回复: 8

请指教一下额,谢谢!

[复制链接]
发表于 2016-10-15 17:42:35 | 显示全部楼层 |阅读模式

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

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

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

        def __del__(self):
                C.count -= 1

>>> a = C()
>>> b = C()
>>> c = C()
>>> C.count
3
>>> del a
>>> C.count
2
>>> del b, c
>>> C.count
0
在这个程序里,类里的那两个函数是怎么被执行的 啊?看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-15 19:21:36 | 显示全部楼层
init函数就是构造函数,你没实例化一次这个类count就加1,你没del,也就是析构一次实例化的类,它就减一。
你开始实例了三个,abc三个,所以count就是3.
相应的,你删除了这三个对象,最后count就回到0了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-17 09:55:52 | 显示全部楼层
李小否 发表于 2016-10-15 19:21
init函数就是构造函数,你没实例化一次这个类count就加1,你没del,也就是析构一次实例化的类,它就减一。  ...

意思是当a = C( ),那个init函数就会自动运行一次吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-17 18:36:08 | 显示全部楼层
新手学python 发表于 2016-10-17 09:55
意思是当a = C( ),那个init函数就会自动运行一次吗?

对的 只要实例化一个对象  就执行一次
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-17 21:04:03 | 显示全部楼层
这个例子是为了验证构造函数__init__ 和 __del__是如何运行的,__init__在类被实例化的时候自动调用,__del__在被del的时候也自动调用,他们在在被自动调用的时候,由于是函数,其内部代码被运行,而C.count += 1,就是迭代+1的意思
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-18 12:56:06 | 显示全部楼层
人zai旅途 发表于 2016-10-17 21:04
这个例子是为了验证构造函数__init__ 和 __del__是如何运行的,__init__在类被实例化的时候自动调用,__del ...

thanks
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-18 12:56:38 | 显示全部楼层
李小否 发表于 2016-10-15 19:21
init函数就是构造函数,你没实例化一次这个类count就加1,你没del,也就是析构一次实例化的类,它就减一。  ...

谢谢啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-25 09:15:52 | 显示全部楼层
受教了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-25 09:42:49 | 显示全部楼层
学习了,受教了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-23 08:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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