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