转:Python的enum
2013-11-19 00:00
176 查看
转:
http://www.cnblogs.com/codingmylife/archive/2013/05/31/3110656.html
如果是新版Python用户(Python 3.4 with PEP 435):
or
旧版Python用户可以充分发挥动态语言的优越性来构造枚举,有简单的:
有复杂的:
有带值到名称映射的:
有用set实现的:
有用range实现的:
有用tuple实现的:
有用namedtuple实现的:
http://www.cnblogs.com/codingmylife/archive/2013/05/31/3110656.html
Python: Enum枚举的实现
从C系语言过来用Python,好不容易适应了写代码不打花括号,突然有一天发现它居然木有枚举……于是stackoverflow了一把,发现神人的枚举(enum)实现到处都是,于是汉化总结过来。如果是新版Python用户(Python 3.4 with PEP 435):
1 2 | fromenumimportEnum Animal=Enum('Animal','ant bee cat dog') |
1 2 3 4 5 | classAnimals(Enum): ant=1 bee=2 cat=3 dog=4 |
1 2 3 4 5 | defenum(**enums): returntype('Enum', (), enums) Numbers=enum(ONE=1, TWO=2, THREE='three') # Numbers.ONE == 1, Numbers.TWO == 2 and Numbers.THREE == 'three' |
1 2 3 4 5 6 | defenum(*sequential,**named): enums=dict(zip(sequential,range(len(sequential))),**named) returntype('Enum', (), enums) Numbers=enum('ZERO','ONE','TWO') # Numbers.ZERO == 0 and Numbers.ONE == 1 |
1 2 3 4 5 6 7 | defenum(*sequential,**named): enums=dict(zip(sequential,range(len(sequential))),**named) reverse=dict((value, key)forkey, valueinenums.iteritems()) enums['reverse_mapping']=reverse returntype('Enum', (), enums) # Numbers.reverse_mapping['three'] == 'THREE' |
1 2 3 4 5 6 7 8 | classEnum(set): def__getattr__(self, name): ifnameinself: returnname raiseAttributeError Animals=Enum(["DOG","CAT","HORSE"]) printAnimals.DOG |
1 2 3 4 5 6 7 | dog, cat, rabbit=range(3) # or classStationary: (Pen, Pencil, Eraser)=range(0,3) printStationary.Pen |
1 2 3 4 | classEnum(tuple): __getattr__=tuple.index State=Enum(['Unclaimed','Claimed']) printState.Claimed |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | fromcollectionsimportnamedtuple defenum(*keys): returnnamedtuple('Enum', keys)(*keys) MyEnum=enum('FOO','BAR','BAZ') # 带字符数字映射的,像C/C++ defenum(*keys): returnnamedtuple('Enum', keys)(*range(len(keys))) # 带字典映射的,可以映射出各种类型,不局限于数字 defenum(**kwargs): returnnamedtuple('Enum', kwargs.keys())(*kwargs.values()) |
相关文章推荐
- python 中实现enum
- Python: Enum枚举的实现
- python3 枚举类Enum、元类Metaclass 绝对路径与遍历目录
- Python基础-枚举-Enum
- python技巧31[python中使用enum]
- python enumrate使用
- Python-namedtuple,enum
- 浅谈Python 的枚举 Enum
- Python 的枚举类型 enum 实现
- Python简单实现enum功能的方法
- python技巧31[python中使用enum]
- windows7下安装enum34 (whl文件)(python)
- Python笔记-装饰器@property、枚举类Enum
- Python: Enum枚举的实现
- Python Module之enum-枚举类型
- Python: Enum枚举的实现
- python技巧31[python中使用enum](转)
- Python3.6的Enum类型导入失败
- Python找不到Enum
- python enum 枚举