Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python _u_getattr__;()能否确定它是否是点式属性访问嵌套序列的一部分?_Python - Fatal编程技术网

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
会发生什么情况。它应该保持原样(在被访问时的状态),还是改变以反映寄存器的新值?