免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6836 | 回复: 4

我原来写的文章。如何打印对象的方法和属性 [复制链接]

论坛徽章:
0
发表于 2005-06-13 21:43 |显示全部楼层
作者:梅劲松
有时候我们需要让对象可以打印来方便调试,可以重载对象的str方法来实现。

  1. class header:
  2.     """dns消息头抽象类"""
  3.     def __init__(self, qid = 1):
  4.         #初始化消息头
  5.         self.qid       = qid #DNS 查询封包编号,作为确认依据。长度为16 byte
  6.         self.qr        = 0   #查询封包为 0 ﹔回应为 1 。长度为 1 byte
  7.         self.opcode    = 0   #封包类别(QUERY, IQUERY, STATUS, Reserved)。长度为 4 bytes。
  8.         self.aa        = 0   #Flags共 4 bytes ,各表示:AA(Authoritative Answer)、TC(Truncation)、RD(Recursion Desired)、RA(Recursion Avalable)。
  9.         self.tc        = 0
  10.         self.rd        = 1
  11.         self.ra        = 0
  12.         self.reserved  = 0    #保留未用。
  13.         self.rcode     = 0    #回应讯息,长 4 bytes ,除 0 及 6-15 保留未用外,1-5 分别为:Format Error、Server Failure、Name
  14.         self.qsection  = 1    #问题部分,只支持1。
  15.         self.ansection = 0    #答案部分。
  16.         self.ausection = 0    #权力部分。
  17.         self.arsection = 0    #另外的部分。

  18.     def __str__(self):
  19.         """字符串化"""
  20.         if len(self.__dict__) >; 0:
  21.             plist = []
  22.             for field in self.__dict__:
  23.                 plist.append(str(field) + ":"  + str(self.__dict__[field]))
  24.             return reduce(lambda x,y: x + "\n" + y, plist)
  25.         else:
  26.             return ""

  27. test=header()

  28. print test
复制代码

论坛徽章:
0
发表于 2005-06-14 10:09 |显示全部楼层

我原来写的文章。如何打印对象的方法和属性

看上去象java的Object.toString(),是不是道理是一样的啊?

论坛徽章:
0
发表于 2005-06-14 10:31 |显示全部楼层

我原来写的文章。如何打印对象的方法和属性

我觉得应该不一样。
这里用的是python的操作符重载,使用类似方法。你可以实现两个对象相加,即使是两个不相干的对象。
这里是重载了__str__()这个私有方法,让对象本身可以被打印。

论坛徽章:
0
发表于 2005-06-15 07:56 |显示全部楼层

我原来写的文章。如何打印对象的方法和属性

有没有介绍Python操作符重载的文章?或是例子。从上面的程序看,只是覆盖了一个方法。并没有引入不同的操作符定义啊?

论坛徽章:
0
发表于 2005-06-15 09:41 |显示全部楼层

我原来写的文章。如何打印对象的方法和属性

我另开一个主题来讨论了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP