我有一个基于布局表的固定长度文本记录的解析系统:
parse_table = [\
('name', type, length),
....
('numeric_field', int, 10), # int example
('textc_field', str, 100), # string example
...
]
这个想法是,给定一个消息类型的表,我只是遍历字符串,并根据表中的条目从中重建一个字典。
现在,我可以处理字符串和适当的整数,但是 int()
不会解析全空格字段(当然,这是有充分理由的)。
我想通过定义处理空白字符串的 int
的子类来处理它。这样我就可以去更改适当的表条目的类型,而无需在解析代码(如过滤器)中引入额外的杂乱无章,而且它会“正常工作”。
但是我不知道如何在子类型中覆盖内置类型的构造函数,因为在子类中定义构造函数似乎没有帮助。我觉得我在这里遗漏了一些关于 Python 内置类型如何工作的基本知识。
我应该如何处理这个问题?我也愿意接受不会增加太多复杂性的替代方案。
原文由 Alex B 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用工厂函数而不是 int 或 int 的子类: