免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3920 | 回复: 2
打印 上一主题 下一主题

Python的对象、类的理解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-06-24 14:58 |只看该作者 |倒序浏览
Python的对象理解:同一name,不同对象的理解

>;>;>; class test: pass
>;>;>; a=test()
>;>;>; a
<__main__.test instance at 0x009126E8>;
>;>;>; b=a
>;>;>; b
<__main__.test instance at 0x009126E8>;
>;>;>; b=test()
>;>;>; b
<__main__.test instance at 0x00A91EB8>;
>;>;>; a=test()
>;>;>; a
<__main__.test instance at 0x00AA4558>;
>;>;>; a=test()
>;>;>; a
<__main__.test instance at 0x009126E8>;
>;>;>;
绿色部分:a,b都是指向同一个对象,也就说a,b是一个对象;
蓝色部分:a,b指向不同的对象,两种不同的同类对象;
红色部分:a,a指向不同的对象,同名但不同类,不过第一个a已经不能定位了。
以下引用牛人(没劲)的解释:
梅劲松 13:49:28class test是描述一个对象的代码,我们叫类a=test()是一个test对象。如果b=a了,那么他们就是同一个对象。如果a=test()b=test()那么就是不同的对象了,就象男人是属于人类,但是任何两个男人都不相等。
梅劲松 13:49:58a=test()b=a就是一个人。a=test()b=test()是两个人。
梅劲松 13:51:00test()你可以理解为你出生的那一瞬间。你可以有两个名字,但是是同一个人。但是两个婴儿即使是有同样的名字,却是两个不同的人。

呵呵,原文放在我的blog上http://blog.chinaunix.net/articl ... 650&blogId=1537

论坛徽章:
0
2 [报告]
发表于 2005-06-24 15:39 |只看该作者

Python的对象、类的理解

在Python中是通过赋值来将一个对象与一个名字进行绑定的。这样通过这个名字你就可以访问它所绑定的对象了。就象是C中的指针。而test()是创建一个对象,再执行又创建一个。因此:
a=test() 这是创建一个新对象并将其绑定在a上
a=test() 这又创建一个新对象并将其绑定在a上。原来a绑定的对象就没人使用了。一旦对象的引用计数为0,Python在垃圾回收时会自动释放它。

论坛徽章:
0
3 [报告]
发表于 2005-06-24 16:10 |只看该作者

Python的对象、类的理解

木头兄对python核心理解很透彻。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP