枚举

目录

枚举

枚举和普通类的区别

枚举类型,枚举名称和枚举值 

枚举的注意事项

枚举转换

小结


枚举

  • 枚举的意义重在标识。
  • 类中赋常量来定义标识。
    • from enum import Enum
      
      class VIP(Enum):
      
          YELLOW = 1
          RED = 2
      
      print(VIP.YELLOW)
      
      # ::输出
      VIP.YELLOW

枚举和普通类的区别

  • (用字典和普通类表示类型。)
    • {'yellow':1,'red':2}   
      
      class VIP():
      	
      	YELLLOW = 1
      	GREEN = 1
      	RED = 2
      #(可变)
      #(没有防止相同标签值的功能)
      #(YELLOW是1,GREEN也可以是1,字典的值可以轻松改变。)

       

枚举类型,枚举名称和枚举值 

from enum import Enum

class VIP(Enum):
	YELLOW = 1
	RED = 2

print(VIP.YELLOW)
print(VIP['YELLOW'])
print(VIP.YELLOW.name)
print(VIP.YELLOW.value)
# ::输出
VIP.YELLOW     枚举类型
VIP.YELLOW     枚举类型
YELLOW	       枚举名称
1	       枚举值
# ::类型
# <enum 'VIP'>
# <enum 'VIP'>
# <class 'str'>
# <class 'int'>

(枚举遍历得到枚举类型) 

for v in VIP:
	print(v)

# ::输出
VIP.YELLOW
VIP.RED

枚举的注意事项

(枚举的标签名称不可以相同)
(枚举的值可以相同,但是第二个枚举类型可以看做第一个枚举类型的别名。)

from enum import Enum

class VIP(Enum):
	YELLOW = 1
	GREEN = 1   
	# 更像是 YELLOW_ALIAS = 1
	RED = 2
# 用for in循环直接遍历VIP不会遍历出VIP.GREEN(被当做VIP.YELLOW的别名跳过)
#(遍历VIP.__members__属性得到所有的枚举名称)
for v in VIP.__memebers__
	print(v)

::输出
YELLOW
GREN
RED

for v in VIP.__members__.items():
	print(v)     
	# ('YELLOW', <VIP.YELLOW: 1>)
	print(v[1])     
	# VIP.YELLOW -->   枚举类型
	# v[1].name v[1].value

枚举转换

(通常代码中使用的是枚举类型,而数据库中存储的是相对应的数字,如何将数据库的数字转换成相应的枚举类型。)

from enum import Enum

class VIP(Enum):
	YELLOW = 1

a = 1
VIP(a)  
# VIP.YELLOW

小结

#(枚举值也可以是字符串,VIP.YELLOW = "str",如果强制枚举值必须为数字,可以继承IntEnum)
from enum import IntEnum

class VIP(IntEnum):
	YELLOW = 1

#(使用unique装饰器强制使枚举值唯一。)
from enum import Enum,unique

@unique
class VIP(Enum):
	YELLOW = 1
	RED = 2
#(如果枚举值相同即存在别名情况,会报错。)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值