当我们需要定义常量时, 一个办法是用大写变量通过整数来定义, 例如月份
但是这样的定义的类型是int, 并且仍然是变量, 并且在运算中, 无法时时创建对应的值, 当然这种指代是以更好的方式去使用变量数值
这里存在更好的方法是为这样的枚举类型定义一个class类型, 然后, 每个常量都是class的一个唯一实例
Python 提供了Enum 类来实现这个功能
# 月份 值是不变的, 都是1~12 Jan = 1 # January Feb = 2 # February Mar = 3 # March Apr = 4 # April May = 5 # May Jun = 6 # June Jul = 7 # July Aug = 8 # August Sep = 9 # September Oct = 10 # October Nov = 11 # November Dec = 12 # December # 如果用枚举类 from enum import Enum # 抬头前缀可以空 第一种方式 Months = Enum('抬头前缀', ( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' )) # 遍历枚举所有成员 # 自动从1开始 不会重复 # 类似字典 但又不是字典 """ { 'Jan': <抬头前缀.Jan: 1>, 'Feb': <抬头前缀.Feb: 2>, 'Mar': <抬头前缀.Mar: 3>, 'Apr': <抬头前缀.Apr: 4>, 'May': <抬头前缀.May: 5>, 'Jun': <抬头前缀.Jun: 6>, 'Jul': <抬头前缀.Jul: 7>, 'Aug': <抬头前缀.Aug: 8>, 'Sep': <抬头前缀.Sep: 9>, 'Oct': <抬头前缀.Oct: 10>, 'Nov': <抬头前缀.Nov: 11>, 'Dec': <抬头前缀.Dec: 12> } """ print(Months.__members__) # 取其中一个 print(Months.Feb) # 的到是key print(Months.Feb.value) # 的到的是值 print(Months(2)) # 根据值返回key print(Months(2).name) # 返回去除抬头前缀的key # 定义一个颜色的枚举 (继承Enum) 第二种方式 值可以自定义 class Color(Enum): red = 100 green = 200 blue = 300 yellow = 200 # 不允许key相同或者value 如果value重复根据value取name只能的到第一个 print(Color(200))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)