这是我的一般问题空间:
我通过 I2C 与设备建立了字节/位协议。
我有一个命令的“数据库”,可以完整描述所有位字段类型、值和枚举。
我有一个类来使用数据库和一个 i2c 驱动程序/事务器,以便我可以调用命令并获取响应。
MyProtocol = Protocol('database.xml',I2CDriver())
theStatus = MyProtocol.GET_STATUS()
为 GET_STATUS 命令创建正确的字节流,通过 i2c 发送它并当前以字节数组形式返回响应。我可以让它在 GET_STATUS() 实现中漂亮地打印响应,但我想将该行为移至返回对象,而不是在命令中。
我希望我的返回对象是“智能”的:theStatus
需要有字节列表/数组以及对其字段定义的引用。
I want theStatus
像列表/字节数组一样,所以我可以直接检查字节。我不关心切片是否是字节列表或字节数组之外的任何内容。一旦它们被切掉,它们就只是字节了。
我希望能够打印“theStatus”print(theStatus)
并让它漂亮地打印状态中的所有字段。一旦我确定了一个可行的数据结构,允许我访问字节和数据库,我就很清楚如何实现这一点。
我想检查theStatus
按字段名称,例如theStatus.FIELDNAME
或者可能theStatus['FIELDNAME']'
。同样的事情:一旦我有了一个以字节数组和数据库作为成员的可用数据结构,我就可以实现这一点。
问题是我不知道导致最少问题的“正确”数据结构。
关于最Pythonic的方法来完成这个任务有什么建议吗?我最初的想法是子类化list
并将字段定义添加为成员,但似乎 python 根本不喜欢这个想法。
构图似乎是下一个赌注,但让它表现得像一个合适的list
看起来这可能需要大量工作才能使其“正确”。