python中具名元祖namedtuple配合Enum的使用

from enum import Enum
from collections import namedtuple


class MainTypeEnum(Enum):
    FIRST = 1
    SECOND = 2


MainTypeEnumNamedTuple = namedtuple("MainTypeEnum", ("sub_type", "main_type"))


class SubTypeEnum(Enum):
    NAME = MainTypeEnumNamedTuple(1, MainTypeEnum.SECOND)
    AGE = MainTypeEnumNamedTuple(2, MainTypeEnum.SECOND)


if __name__ == '__main__':
    print(SubTypeEnum.NAME.value)
    print(SubTypeEnum.NAME.value[0], SubTypeEnum.AGE.value[1].value)
    print(SubTypeEnum.NAME.value.sub_type, SubTypeEnum.AGE.value.main_type.value)
    print(SubTypeEnum.NAME.value._asdict())
    print(SubTypeEnum.NAME.value._asdict()["sub_type"], SubTypeEnum.NAME.value._asdict()["main_type"].value)
    p = MainTypeEnumNamedTuple(**{"sub_type": "Lisi", "main_type": 28})
    print(p.sub_type, p.main_type)
    p = p._replace(sub_type="王五")
    print(p)

posted @ 2022-05-12 14:08  专职  阅读(62)  评论(0编辑  收藏  举报