【发布时间】:2018-05-22 14:45:06
【问题描述】:
这是我的一般问题空间:
我有一个通过 I2C 的设备的字节/位协议。
我有一个命令“数据库”来完整描述所有位域类型、值和枚举。
我有一个使用数据库的类和一个 i2c 驱动程序/事务处理程序,这样我就可以调用命令并获得响应。
MyProtocol = Protocol('database.xml',I2CDriver())
theStatus = MyProtocol.GET_STATUS()
为 GET_STATUS 命令创建正确的字节流,通过 i2c 发送它并当前以字节数组的形式返回响应。我可以让它在 GET_STATUS() 实现中漂亮地打印响应,但我想将该行为移动到返回对象,而不是在命令中。
我希望我的返回对象“智能”:theStatus 需要包含字节列表/数组以及对其字段定义的引用。
我想让theStatus 像一个列表/字节数组一样工作,所以我可以直接检查字节。我不在乎切片是否不是字节列表或字节数组。一旦它们被切掉,它们就只是字节。
我希望能够打印“theStatus”print(theStatus) 并让它漂亮地打印状态中的所有字段。一旦我确定了一个允许我访问字节和数据库的可行数据结构,我对如何实现这一点感到很自在。
我想用theStatus.FIELDNAME 或theStatus['FIELDNAME']' 之类的字段名称检查theStatus。同样的事情:一旦我有了一个以字节数组和数据库为成员的可行数据结构,我就可以做到这一点。
问题是我不知道导致问题最少的“正确”数据结构。
对完成此任务的最 Pythonic 方式有什么建议吗?我最初的想法是继承list并将字段定义添加为成员,但似乎python根本不喜欢这个想法。
组合似乎是下一个赌注,但让它表现得像一个正确的list 似乎需要大量工作才能让它“正确”。
【问题讨论】:
标签: python data-structures subclass