【发布时间】:2020-05-22 05:12:47
【问题描述】:
我查看了这个example 并尝试编写一个包含标题信息的类。 从另一个类中,我会调用这个类并获取要使用的字典。
# -*- coding: utf-8 -*-
import binascii
import codecs
from datetime import datetime
from collections import defaultdict
class HeaderInfo(dict, object):
def __init__(self):
header_dict = defaultdict(list) # This shall hold all the issues in the parsed file
# super(HeaderInfo, self).__init__(file)
self._object = "C:\Sample.log"
file = open(self._object, "rb")
self._dict = {}
byte = file.read(4)
logFileSize = int.from_bytes(byte, "little")
header_dict = self.add('logFileSize', logFileSize)
dict = self.add('logFileSize', logFileSize)
# print((dict))
byte = file.read(20)
hexadecimal = binascii.hexlify(byte)
header_dict = self.add('fileType', codecs.decode(hexadecimal, "hex").decode('ascii'))
dict = self.add('fileType', codecs.decode(hexadecimal, "hex").decode('ascii'))
# print((dict))
byte = file.read(5)
hexadecimal = binascii.hexlify(byte)
header_dict = self.add('fileVersion', codecs.decode(hexadecimal, "hex").decode('ascii'))
dict = self.add('fileVersion', codecs.decode(hexadecimal, "hex").decode('ascii'))
# print((dict))
byte = file.read(10)
hexadecimal = binascii.hexlify(byte)
header_dict = self.add('fileNumber', codecs.decode(hexadecimal, "hex").decode('ascii'))
dict = self.add('fileNumber', codecs.decode(hexadecimal, "hex").decode('ascii'))
def add(self, id, val):
self._dict[id] = val
return self._dict
# print the data
hi = HeaderInfo()
print(hi)
当我尝试使用打印语句时,数据被打印了,但是
hi = HeaderInfo()
,“hi”中不返回任何值。
如果 HeaderInfo() 被调用,有什么想法返回字典值吗?
【问题讨论】:
-
你所做的只是设置一堆局部变量和/或任意属性
self._dict。如果您希望数据成为实例的一部分,则需要修改self。例如。self['foo'] = 'bar'. -
init 函数是一个构造函数,如果你想从你的类中返回一个字典,它不会返回任何东西,就像“hi._dict”一样使用它
标签: python python-3.x class dictionary