Python 的枚举类型 enum 实现
2014-12-31 09:55
288 查看
Python 的枚举类型 enum 实现
Python 的枚举类型 enum 实现C 语言中有个枚举类型 enum,很适合在定义一系列相关的常量时,由程序自动为常量分配 id,解决人工分配 id 可能导致的 id 冲突问题。在 Python 这种脚本语言中,当定义大量相关的常量时,如果由程序员人工分配,要么容易 id 冲突,要么不好进行 id 分段管理。其实,可以很简单地实现 Python 版的 enum(当然是没有类型检测的 enum 版本)。
实现代码如下:
[python] view
plaincopy
def enum(module, str_enum, sep=None):
"""把用特定分隔符隔开的 str_enum 字符串实现为 module 的枚举值.
@param module 宿主对象, 可以是 module, class, ...
eg1: enum(test, "A B C") => test.A,test.B,test.C == 0,1,2
eg2: enum(CTest, 'one=1,two,three,ten=0x0A,eleven', sep=',') =>
CTest.one,CTest.two,CTest.ten, CTest.eleven == 1,2,10,11
"""
idx = 0
for name in str_enum.split(sep):
if '=' in name:
name,val = name.rsplit('=', 1)
if val.isalnum():
idx = eval(val)
setattr(module, name.strip(), idx)
idx += 1
相关文章推荐
- Python 的枚举类型 enum 实现
- Python: Enum枚举的实现
- 单例模式之使用enum枚举数据类型实现
- Python: Enum枚举的实现
- Python: Enum枚举的实现
- Python: Enum枚举的实现
- 【python】Python: Enum枚举的实现
- 【转载】Python: Enum枚举的实现
- 使用enum枚举数据类型实现多线程中的单例模式
- python学习笔记:利用__getattr__属性实现枚举Enum
- Enum 枚举类型
- C++中enum枚举类型成员重名问题的解决方法 - Enum枚举类型的类封装(转)
- enum : C#中的枚举类型,原来有这么多用法
- 高阶Java枚举类型enum使用详解
- 枚举(enum),类型说明(typedef),预处理指令
- Hibernate将Enum枚举类型映射为Int类型
- C++中enum枚举类型成员重名问题的解决方法 - Enum枚举类型的类封装(转)
- 枚举类型------enum
- enum : C#中的枚举类型,原来有这么多用法(转)
- 所有集合类型整理(注:由于BitVector32未实现枚举接口,不计入)