创建嵌套数据结构并在键入(Python)时从另一个模块快速访问]]

问题描述 投票:0回答:1

Hello :)我正在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中的代码(Files_CommonUse.folder_ModbusIndex.indexModbus是模块1的路径是:

import Files_CommonUse.folder_ModbusIndex.indexModbus as index_modbus
indexmodbus = index_modbus.ModbusDiction()
print(indexmodbus.NameB.NameB2.value)

印刷品的残液为76,因此可以正常工作。但是,当我键入indexmodbus。

时,未出现“字段” NameA。当我键入indexmodbus.NameA。时,我希望显示为[[value,NameBNameC,但是什么也没显示。我不知道这个命名的元组是否变得可变。顺便说一下,我正在使用Eclipse。请,有人可以帮我吗? :)也许命名元组的想法不符合我的兴趣,或者我以错误的方式使用了这个概念:S

你好:)我正在Python中使用两个模块:模块1(用于创建嵌套的数据结构)和模块2(用于访问结构的“字段”,并且非常重要的是,我希望Python向我展示。 ..

python nested structure namedtuple
1个回答
0
投票
我会改用自定义类来创建自定义数据结构,因为它比namedtuples更灵活。

def mod_bus_diction(**kwargs): return type('MyStructure', (), {**kwargs}) MyStructure = mod_bus_diction( value=5, NameB=mod_bus_diction( value=6, NameB2=mod_bus_diction( value=76 ) ), NameC=mod_bus_diction( index=78 ) )

© www.soinside.com 2019 - 2024. All rights reserved.