Python _u_getattr__;()能否确定它是否是点式属性访问嵌套序列的一部分?
对于我的应用程序(使用命名位字段对硬件寄存器进行建模),我希望支持这样的语法来访问字段:Python _u_getattr__;()能否确定它是否是点式属性访问嵌套序列的一部分?,python,Python,对于我的应用程序(使用命名位字段对硬件寄存器进行建模),我希望支持这样的语法来访问字段: device.REG0.F0 = 1 # access some defined subset of bits print device.REG0.F0 但也允许以整数形式访问整个寄存器: device.REG0 = 123 # access all bits print device.REG0 为了支持这一点,外部对象上的\uuuuuu getattr\uuuuuuuuuuuuuuuu
device.REG0.F0 = 1 # access some defined subset of bits
print device.REG0.F0
但也允许以整数形式访问整个寄存器:
device.REG0 = 123 # access all bits
print device.REG0
为了支持这一点,外部对象上的\uuuuuu getattr\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu()
需要确定它是访问某个最内部字段的一部分(在这种情况下,返回register对象以进行进一步的\uuu
通过inspect
模块查看调用者上下文的源文本,我得到了一个半途而废的概念证明,但它很容易被破坏。是否有更可靠的方法来获取代码中有关“当前位置”的AST或其他语法信息
或者,是否有提供所需语法的替代方法:
- 对象在适当的上下文中隐式生成整数的某种方式李>
- 模拟属性属性的某种方法
- 还有别的魔法吗
注意:我知道我可以用不同的语法实现所需的功能。这个特定的语法对我很重要。您需要创建自己的类,该类继承自int
。创建device
时,需要创建int
类的一个实例,并给它一个名为FO
的属性。在尝试创建可变整数时,似乎存在一个问题。如果您访问并存储REG0
,然后通过对设备的新访问修改REG0
,那么以前存储的REG0
会发生什么情况。它应该保持原样(在被访问时的状态),还是改变以反映寄存器的新值?