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 @   foreast  阅读(802)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示