枚举_python

枚举其实是一个类  枚举类不实例化(23种设计模式:单例模式)

一、枚举其实是一个类  枚举类不实例化(23种设计模式:单例模式)

from enum import Enum
#继承自枚举类
class VIP(Enum):
    YELLOW=1
    #YELLOW=2会报错,防止相同标签产生
    GREEN=2
    BLACK=3
    RED='ndh'#允许
    
class VIP1(Enum):
    YELLOW=1
    #YELLOW=2会报错,防止相同标签产生
    GREEN=2
    BLACK=3
    RED=4
#枚举的优点:不可变、不重复及防止相同标签的功能

枚举的优点:不可变、不重复及防止相同标签的功能

二、枚举类型 !

print(VIP.YELLOW)#>>>VIP.YELLOW  打印枚举类型
#VIP.yellow=6#会报错,因为枚举不可改变

#通过.value属性可以访问到枚举值!
print(type(VIP.GREEN.value))#<class 'int'>
print(VIP.GREEN.value)#2
#通过.name属性可以访问到标签值!
print(type(VIP.GREEN.name))#<class 'str'>
print(VIP.GREEN.name)#GREEN

#   通过枚举名称可以获取枚举类型
print(VIP['GREEN'])#>>>VIP.GREEN 

#通过遍历可以获取枚举类型
for i in VIP:
    print(i)
'''
输出结果:
VIP.GREEN
VIP.YELLOW
VIP.GREEN
VIP.BLACK
VIP.RED

'''

输出结果:

#输出结果:
>>>VIP.YELLOW 
>>><class 'int'>
>>>2
>>>|<class 'str'>
>>>GREEN
>>>VIP.GREEN 
>>>VIP.GREEN
VIP.YELLOW
VIP.GREEN
VIP.BLACK
VIP.RED

三、枚举之间的比较

1、等值比较

#1、等值比较
result =VIP.GREEN==VIP.YELLOW
print(result)#>>>Flase
result =VIP.GREEN==VIP.GREEN
print(result)#>>>Ture

reslut=VIP.GREEN==2
print(result)#>>>Ture

2、身份比较


#2、身份比较
result =VIP.GREEN is VIP.GREEN
print(result)#>>>Ture

result =VIP.GREEN == VIP1.GREEN
print(result)#>>>Flase
#两个枚举类虽然数值相同,但实质对于本身来说一个,所以返回Flase

3、不支持大小比较

#3、不支持大小比较
#reslut=VIP.GREEN > VIP.YELLOW
print(reslut)#报错:TypeError: unorderable types: VIP() > VIP()


四、枚举的注意事项
1、不可变、不重复及防止相同标签的功能
2、可以允许枚举中两个类型的值相同 ,如YELLOW=1   GREEN=1 这里两个枚举标签名互为对方的别名

class VIP2(Enum):
    YELLOW=1
    #YELLOW=2会报错,防止相同标签产生
    GREEN=1

#不输出别名枚举标签
for i in VIP2:
    print(i)
#>>>VIP2.YELLOW   这里YELLOW\GREEN只打印其中一个

#输出别名枚举标签   
for i in VIP2.__members__.items():
    print(i)
#>>>('YELLOW', <VIP2.YELLOW: 1>)  ('GREEN', <VIP2.YELLOW: 1>)

#输出别名枚举标签   
for i in VIP2.__members__:
    print(i)
#>>>YELLOW   GREEN


#使用枚举良好的编码实例:
if a==VIP.GREEN:#<==>a==2
    print()
if a==VIP.YELLOW:#<==>a==1
    print()

a=1
print(VIP(a))
#>>>VIP.YELLOW

五、相对于枚举,普通的表示变量的两种方式表示
(不可取,因为1、可变2、没有防止相同标签的功能)

#1、
a={'yellow':1,'green':2}
a['yellow']=3#不可取,因为可变
#2、
class TypeDiamond():
    yellow=1
    green=2

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值