对于我的应用程序(使用命名位域建模硬件寄存器),我想支持这样的语法来访问字段:
device.REG0.F0 = 1 # access some defined subset of bits
print device.REG0.F0
但也允许以整数形式访问整个寄存器:
device.REG0 = 123 # access all bits
print device.REG0
为了支持这一点,外部对象上的__getattr__()
需要确定它是否是对某个最内层字段的访问的一部分(在这种情况下返回寄存器对象以进行进一步的__get/setattr__()
处理),或者只是访问整个寄存器(在这种情况下返回整数值)。
通过inspect
模块查看来电者上下文的来源文本,我有一个半概念的概念验证工作,但它很容易被打破。是否有一些更可靠的方法来获得关于当前现场的AST或其他语法信息'在代码?
或者,是否有其他方法可以提供所需的语法:
注意:我意识到我可以使用不同的语法实现所需的功能。这个特定的语法对我很重要。