您好:)我在Python中使用了两个模块:模块1(用于创建嵌套数据结构)和模块2(用于访问结构的“字段”,非常重要的是,我希望Python在我键入模块2时显示字段,因为模块1中将有很多字段)。嵌套结构如下所示:
NAME A
value: 5
NAME B
value: 6
NAME B2
Value:76
NAME C
Index: 78
我一直在研究是否使用列表、字典、元组。。。到目前为止,我已经看到命名元组可能是正确的解决方案,因为它是不变性的,并且使用名称作为标识符,而不是数字。我在模块1中的代码是:
from collections import namedtuple
def ModbusDiction():
NameA = namedtuple('NameA', ['value','NameB','NameC'])
NameB = namedtuple('NameB', ['value','NameB2'])
NameB2 = namedtuple('NameB2','value')
NameC = namedtuple('NameC','index')
NameC_value = NameC(78)
NameB2_value = NameB2(76)
NameB_value = NameB(6, NameB2_value)
NameA_value = NameA(5,NameB_value,NameC_value)
return NameA_value
我在模块2中的代码(文件\u CommonUse.folder\u ModbusIndex.indexModbus是模块1的路径)是:
import Files_CommonUse.folder_ModbusIndex.indexModbus as index_modbus
indexmodbus = index_modbus.ModbusDiction()
print(indexmodbus.NameB.NameB2.value)
打印的结果是76,所以它工作正常。然而,当我输入indexmodbus时,“字段”名称a未出现。当我输入indexmodbus.NameA时,我希望显示值,名称b或名称c,但什么也没有显示。我想知道这个命名元组是否变了。顺便说一下,我正在使用Eclipse
求求你,有谁能帮我这个忙吗?:)也许命名元组的想法不符合我的兴趣,或者我用了一种错误的方式:S
我会使用我的自定义类来创建我的自定义数据结构,因为它比
namedtuples
更灵活我在
ipython
终端上检查了它,它建议使用值和属性。顺便说一下,我没有检查eclipse由于命名元组是一种轻量级对象,它们的行为类似于对象。这意味着,
NameA_value
是NameA
元组对象的实例化,如果从函数返回该实例,新变量将成为该实例。因此,您的indexmodbus
是NameA
元组对象的实例。 如果要执行:indexmodbus.NameA
,则需要在NameA
之上执行另一个步骤,然后函数可以如下所示:现在您可以使用:
indexmodbus.NameA
等访问NameA
相关问题 更多 >
编程相关推荐