免费注册 查看新帖 |

Chinaunix

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

请教类实例化问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-25 01:25 |只看该作者 |倒序浏览
初学python
这里有一段代码:
  1. #!/usr/bin/python

  2. class Test:
  3.     data = []

  4.     def __init__(self):
  5.         self.data[:] = []
  6.    
  7.     def add(self,line):
  8.        self.data.append(line)
  9.     def printdata(self):
  10.         for i in self.data:
  11.             print i
  12.     def clear(self):
  13.         self.data[:] =[]
  14.         
  15. def main():
  16.     d = {}
  17.    
  18.     myTest1 = Test()
  19.     myTest1.add("line 1")
  20.     myTest1.add("line 2")

  21.     d["1"] = myTest1

  22.     myTest2 = Test()
  23.     myTest2.add("line 3")
  24.     d["2"] = myTest2

  25.    
  26.     for k in d.keys():
  27.         print "######"
  28.         print k
  29.         t = d[k]
  30.         t.printdata()
  31.    

  32. if __name__ == "__main__":
  33.     main()
复制代码
期望输出:
######
1
line 1
line 2
######
2
line 3

实际输出
######
1
line 3
######
2
line 3

貌似myTest2 = Test()
并没有真的实例化。

望哪位达人帮忙瞅一瞅。先谢过

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
2 [报告]
发表于 2012-02-25 07:05 |只看该作者
  1. class Test:
  2.     data = []

  3.     def __init__(self):
  4.         self.data = []
  5.    
  6.     def add(self,line):
  7.        self.data.append(line)
  8.     def printdata(self):
  9.         for i in self.data:
  10.             print i
  11.     def clear(self):
  12.         self.data = []
复制代码

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
3 [报告]
发表于 2012-02-25 15:05 |只看该作者
LZ代码问题是没区分类属性与实例属性,看我给的Demo
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-

  3. class Test1:
  4.     """类属性Demo"""

  5.     data = []

  6.     def __str__(self):
  7.         return ', '.join(self.data)

  8.     def add(self, e):
  9.         self.data.append(e)
  10.             
  11. class Test2:
  12.     """实例属性Demo"""

  13.     def __init__(self):
  14.         self.data = []

  15.     def __str__(self):
  16.         return ', '.join(self.data)

  17.     def add(self, e):
  18.         self.data.append(e)


  19. def main():

  20.     t11 = Test1()
  21.     t11.add('line1')
  22.     t11.add('line2')
  23.         
  24.     t12 = Test1()
  25.     t12.add('line3')

  26.     print 't11:', t11
  27.     print 't12:', t12

  28.     t21 = Test2()
  29.     t21.add('line1')
  30.     t21.add('line2')
  31.         
  32.     t22 = Test2()
  33.     t22.add('line3')

  34.     print 't21:', t21
  35.     print 't22:', t22

  36. if __name__ == '__main__':
  37.     main()
  38.                               
复制代码
输出:
t11: line1, line2, line3
t12: line1, line2, line3
t21: line1, line2
t22: line3

论坛徽章:
0
4 [报告]
发表于 2012-02-27 17:42 |只看该作者
哈哈~~明白了,多谢哈~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP