python中定义枚举

class WeekEnum(Enum):
    MONDAY = "周一"
    TUESDAY = "周二"
    WEDNESDAY = "周三"
    THURSDAY = "周四"
    FRIDAY = "周五"
    SATURDAY = "周六"
    SUNDAY = "周日"

    @classmethod
    def contains_value(cls, v):     # 判断是否包含某个值
        return v in cls._value2member_map_


# @unique     # 枚举值不可重复
# class WeekUnique(Enum):
#     MONDAY = "周一"
#     TUESDAY = "周一"  # 枚举值与MONDAY的值重复,报错
#     WEDNESDAY = "周三"
#     THURSDAY = "周四"
#     FRIDAY = "周五"
#     SATURDAY = "周六"
#     SUNDAY = "周日"



if __name__ == '__main__':

    print(WeekEnum.MONDAY)
    print(WeekEnum.MONDAY.value)
    print(WeekEnum.MONDAY.name)
    print("周一" == WeekEnum.MONDAY)
    print("周一" == WeekEnum.MONDAY.value)

    print(WeekEnum("周一"))

    for v in WeekEnum:
        print(v)

    print(WeekEnum.contains_value("周一"))

运行结果:

WeekEnum.MONDAY
周一
MONDAY
False
True
WeekEnum.MONDAY
WeekEnum.MONDAY
WeekEnum.TUESDAY
WeekEnum.WEDNESDAY
WeekEnum.THURSDAY
WeekEnum.FRIDAY
WeekEnum.SATURDAY
WeekEnum.SUNDAY
True

 

总结
1.枚举类不能用来实例化对象
2.访问枚举类中的某一项,直接使用类名访问加上要访问的项即可,比如 color.RED
3.枚举类里面定义的 Key = Value,在类外部不能修改 Value 值
4.枚举项可以用来比较,使用 ==,或者 is
5.枚举类中的 Key 不能相同,Value 可以相同,但是 Value 相同的各项 Key 都会当做别名
6.枚举类可以用 for 进行遍历,members.items() 可以遍历出含有别名的类
7.如果要枚举类中的 key 也不能相同,需要导入 unique 对枚举类进行装饰
————————————————
版权声明:本文为CSDN博主「全村之希望」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/spider_py/article/details/100532496

 

posted @ 2021-02-27 15:48  foreast  阅读(791)  评论(0编辑  收藏  举报