Python多个常量版本

时间:2017-03-22 15:13:57

标签: python python-3.x constants

我正在用Python 3编写一个程序来处理几个设备。我必须为每个设备存储常量。某些常量对于所有设备都是通用的并且是永久固定的,但是其他一些常量因版本而异,具体取决于设备的固件版本。我必须存储所有版本的常量,而不仅仅是最后一个版本。请告诉我Pythonic为不同设备及其多个版本定义常量的方法。

我目前的解决方案如下:

general = {
    'GENERAL_CONST_1': 1,
    'GENERAL_CONST_2': 2,
    ...
    'GENERAL_CONST_N': N
}


device_1 = dict()
device_1[FIRMWARE_VERSION_1] = {
    'DEVICE_1_CONST_1': 1,
    'DEVICE_1_CONST_2': 2,
    ...
    'DEVICE_1_CONST_N': N
}
device_1[FIRMWARE_VERSION_1].update(general)

device_1[FIRMWARE_VERSION_2] = {
    'DEVICE_1_CONST_1': 1,
    'DEVICE_1_CONST_2': 2,
    ...
    'DEVICE_1_CONST_N': N
}
device_1[FIRMWARE_VERSION_2].update(general)


device_2 = dict()
device_2[FIRMWARE_VERSION_1] = {
    'DEVICE_2_CONST_1': 1,
    'DEVICE_2_CONST_2': 2,
    ...
    'DEVICE_2_CONST_N': N
}
device_2[FIRMWARE_VERSION_1].update(general)

device_2[FIRMWARE_VERSION_2] = {
    'DEVICE_2_CONST_1': 1,
    'DEVICE_2_CONST_2': 2,
    ...
    'DEVICE_2_CONST_N': N
}
device_2[FIRMWARE_VERSION_2].update(general)

提前谢谢!或者,如果你能指出我可以阅读上述内容的方向,我也会对此表示感谢。

UPD1:

感谢@languitar我决定使用INI / JSON / YAML / TSON ...格式之一。例如,库python-anyconfig中支持的格式。格式INI(由@languitar configparser提出)看起来很适合我的目的(TSON似乎也很有趣),但不幸的是,它们都不支持十六进制值。我很惊讶。但是我的所有常量都应该是十六进制格式。然后我决定尝试YAML格式。现在带有常量的文件看起来像这样:

# General consts for all devices and all versions
general: &general
    GENERAL_CONST_1: 1
    GENERAL_CONST_2: 2
    ...
    GENERAL_CONST_N: N

# Particular consts for device_1 for different firmware version
device_1: &device_1
    <<: *general
    # General consts for device_1 and all firmware versions
    DEVICE_1_CONST_1: 1
device_1:
    FIRMWARE_VERSION_1:
        <<: *device_1
        DEVICE_1_CONST_2: 2
        ...
        DEVICE_1_CONST_N: N
    FIRMWARE_VERSION_2:
        <<: *device_1
        DEVICE_1_CONST_2: 2
        ...
        DEVICE_1_CONST_N: N

# Particular consts for device_2 for different firmware version
device_2: &device_2
    <<: *general
    # General consts for device_2 and all firmware versions
    DEVICE_1_CONST_1: 1
device_2:
    FIRMWARE_VERSION_1:
        <<: *device_2
        DEVICE_1_CONST_2: 2
        ...
        DEVICE_1_CONST_N: N
    FIRMWARE_VERSION_2:
        <<: *device_2
        DEVICE_1_CONST_2: 2
        ...
        DEVICE_1_CONST_N: N

但我不确定,这是否是存储设备及其所有固件版本常量的正确方法

1 个答案:

答案 0 :(得分:0)

只需将您的姓名更改为所有大写字母

喜欢GENERAL, DEVICE_1, etc