python技巧31[python中使用enum]

本文介绍了五种在Python中模拟枚举类型的实现方法,并针对实际应用中的需求进行了讨论。这些方法包括使用类属性、元组、命名元组、自定义枚举类以及字典来表示枚举类型。此外,文章还探讨了如何更好地处理需要将枚举值用作字符串的情况。

 

以下几种方法来模拟enum:(感觉方法一简单实用)

#  way1
class  Directions:
    up 
=  0
    down 
=   1
    left 
=   2
    right 
= 3
    
print  Directions.down

#  way2
dirUp, dirDown, dirLeft, dirRight  =  range( 4 )

print  dirDown

#  way3
import  collections
dircoll
= collections.namedtuple( ' directions ' , ( ' UP ' ' DOWN ' ' LEFT ' ' RIGHT ' ))
directions
= dircoll(0, 1 , 2 , 3 )

print  directions.DOWN

#  way4
def  enum(args, start = 0):
    
class  Enum(object):
        
__slots__   =  args.split()

        
def   __init__ (self):
            
for  i, key  in  enumerate(Enum. __slots__ , start):
                setattr(self, key, i)

    
return  Enum()

e_dir 
=  enum( ' up down left right ' )

print  e_dir.down

#  way5
#
 some times we need use enum value as string
Directions  =  { ' up ' : ' up ' , ' down ' : ' down ' , ' left ' : ' left ' ' right ' : ' right ' }

print  Directions[ ' down ' ]

 

问题:有的时候需要使用enum的值作为字符串使用,像way5中表示的,大家有没有更好的办法?

 

参考:http://audbel.com/0/5009691

 

完!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值