Python 的枚举类型 enum 实现

                    Python 的枚举类型 enum 实现

                      Horin | horin153@msn.com

 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


 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值