Python 自带的Enum优化

本文讨论了如何改进Python标准库中的Enum类,以避免在处理值时需要加.value的问题,特别是对于数据库操作等场景。虽然包含一些兼容性代码,但主要关注优化Enum的使用体验。
摘要由CSDN通过智能技术生成

由于Python官方的Enum使用值时,写数据库等时需要加.value,容易引起问题,故而重写了enum。

有一些兼容性代码,可以去掉,这里就不做优化了。

# coding: utf-8
"""
Enum对象,由于python 提供的包enum34中的Enum、IntEnum在使用过程中容易出现忘记加.value后缀等情况,非常容易出现bug,比如在落库的时候,Enum类型
的数据在做In判断的时候,都十分的容易出错,故此自己开发了一套Enum。本着使用简单的原则,防了Enum34中的概念,加之__choices__的概念,做了如下实现,自带验证功能。

使用方式与头条系统中的enum34几乎没有差别,使用方式如下。
class Example(Enum):
    a = 1
    b = 2

    __choices__ = (
        (a, u'测试样例a'),
        (b, u'测试样例b'),
    )


>> Example['a']  # 通过名字来找到值
Out: 1
>> Example[1]  # 通过值来找到值
Out: 1
>> c = Example[3]
Out: ValueError: 3
>> c = Example['c']
Out: KeyError: c

>> a1 = Example[1]
>> print a1
Out: 1
>> a1.label
Out: u'测试样例a'
>> a1.name
Out: a

"""
from __future__ import unicode_literals


class NewInt(int):
    &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值