免费注册 查看新帖 |

Chinaunix

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

一个特殊方法的例子 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-09 20:49 |只看该作者 |倒序浏览
  1. >>> class A:
  2.     p_num = 0
  3.     def __init__(self,id):
  4.         self.id = id
  5.         A.p_num += 1

  6.         
  7. >>> class B(A):
  8.     def __init__(self,id,name):
  9.         super(B,self).__init__(id)
  10.         self.id = id
  11.         self.name = name
  12.         B.p_num += 1

  13.         
  14. >>> b=B('b','bb')
  15. >>> b.p_num
  16. 2
  17. >>> a=A('a')
  18. >>> a.p_num
  19. 2
  20. >>> c=B('qq','bb')
  21. >>> c.p_num
  22. 3
  23. >>> a.p_num
  24. 3
  25. >>> b.p_num
  26. 3
  27. >>> d=A('qq')
  28. >>> d.p_num
  29. 4
  30. >>> a.p_num
  31. 4
  32. >>> b.p_num
  33. 3
  34. >>> c.p_num
  35. 3
复制代码
这里。。我可以理解为~~B类第一次实例化的时候,B.p_num 继承了当时的A.p_num么?

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
2 [报告]
发表于 2012-08-09 23:50 |只看该作者
  1. Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
  2. Type "copyright", "credits" or "license()" for more information.
  3. >>> class A(object):
  4.     p_num = 0
  5.     def __init__(self, id):
  6.         self.id = id
  7.         A.p_num += 1

  8. >>> class B(A):
  9.     def __init__(self, id, name):
  10.         super(B, self).__init__(id)
  11.         self.id = id
  12.         self.name = name
  13.         B.p_num += 1

  14.         
  15. >>> b = B(1, 'b')
  16. >>> b.p_num, id(b.p_num)
  17. (2, 19179212)
  18. >>> a = A(2)
  19. >>> a.p_num, id(a.p_num)
  20. (2, 19179212)
  21. >>> b.p_num, id(b.p_num)
  22. (2, 19179212)
  23. >>> c = B(3, 'c')
  24. >>> c.p_num, id(c.p_num)
  25. (3, 19179200)
  26. >>> b.p_num, id(b.p_num)
  27. (3, 19179200)
  28. >>> a.p_num, id(a.p_num)
  29. (3, 19179200)
  30. >>>
复制代码

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
3 [报告]
发表于 2012-08-10 00:37 |只看该作者
对象没有的属性会去类里找.

再就是从例子里可以看出, 派生类继承了基类的属性.


注意PYthon一切都是对象, 类也是对象, 也有属性, 而self才是构造出来的对象, 如果读取self自身没有的属性就会去类里找.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP