- 论坛徽章:
- 0
|
作者:梅劲松
有时候我们需要让对象可以打印来方便调试,可以重载对象的str方法来实现。
- class header:
- """dns消息头抽象类"""
- def __init__(self, qid = 1):
- #初始化消息头
- self.qid = qid #DNS 查询封包编号,作为确认依据。长度为16 byte
- self.qr = 0 #查询封包为 0 ﹔回应为 1 。长度为 1 byte
- self.opcode = 0 #封包类别(QUERY, IQUERY, STATUS, Reserved)。长度为 4 bytes。
- self.aa = 0 #Flags共 4 bytes ,各表示:AA(Authoritative Answer)、TC(Truncation)、RD(Recursion Desired)、RA(Recursion Avalable)。
- self.tc = 0
- self.rd = 1
- self.ra = 0
- self.reserved = 0 #保留未用。
- self.rcode = 0 #回应讯息,长 4 bytes ,除 0 及 6-15 保留未用外,1-5 分别为:Format Error、Server Failure、Name
- self.qsection = 1 #问题部分,只支持1。
- self.ansection = 0 #答案部分。
- self.ausection = 0 #权力部分。
- self.arsection = 0 #另外的部分。
- def __str__(self):
- """字符串化"""
- if len(self.__dict__) >; 0:
- plist = []
- for field in self.__dict__:
- plist.append(str(field) + ":" + str(self.__dict__[field]))
- return reduce(lambda x,y: x + "\n" + y, plist)
- else:
- return ""
- test=header()
- print test
复制代码 |
|