在阅读 Pythonstruct
模块的文档时,关于如何使用struct Class的解释有些不足。也就是说,直到我意识到它并不意味着要从一个类继承来创建子类,就像一个可能对threading.Thread 类对象所做的那样。是Doug Hellmann 的 PyMOTW让我明白了这一点。
不过我很好奇,是否可以创建struct
子类?我想这些可以用来向 struct 对象添加功能,例如创建依赖于数据流本身的格式。对此的一种用途可能是具有可变长度字段的数据流,其长度包含在流的早期部分中。或者根据之前字段中设置的标志,包含或省略某些字段。
例如,假设我有以下数据流:
>>> data = '\x01\x00\x04\x73\x70\x61\x6d'
我用以下方式解压它:
>>> struct.unpack('>BH4s', data)
(1, 4, 'spam')
其中第一个元素是 a data_type
,第二个是 a length
,第三个是可变长度字符串,其长度由第二个元素指定。
如果我想创建一个“解包器”来查看该length
部分以获取有关如何解包其余数据流的信息,那么创建一个struct
子类会是一个好方法吗?那里已经有这种事情的例子了吗?