Python 的枚举类型 enum 实现
C 语言中有个枚举类型 enum,很适合在定义一系列相关的常量时,由程序自动为常量分配 id,解决人工分配 id 可能导致的 id 冲突问题。在 Python 这种脚本语言中,当定义大量相关的常量时,如果由程序员人工分配,要么容易 id 冲突,要么不好进行 id 分段管理。其实,可以很简单地实现 Python 版的 enum(当然是没有类型检测的 enum 版本)。
实现代码如下:
- 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
相关推荐
IT之家 2020-03-11
graseed 2020-10-28
zbkyumlei 2020-10-12
SXIAOYI 2020-09-16
jinhao 2020-09-07
impress 2020-08-26
liuqipao 2020-07-07
淡风wisdon大大 2020-06-06
yoohsummer 2020-06-01
chenjia00 2020-05-29
baike 2020-05-19
扭来不叫牛奶 2020-05-08
hxmilyy 2020-05-11
黎豆子 2020-05-07
xiongweiwei00 2020-04-29
Cypress 2020-04-25
冰蝶 2020-04-20