以下几种方法来模拟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

 

完!

posted on 2013-04-01 14:05  一个人的天空@  阅读(320)  评论(0编辑  收藏  举报