python中的枚举类应用

开发中经常会用到枚举,比如定义一些状态码,那该如何实现呢?

最先想到的应该是字典:

status = {
    "OK": (0, "成功"),
    "ERROR": (-1, "失败")
}

使用时这么取用:

data = {
    "code": status.get("OK")[0],
    "msg": status.get("OK")[1]
}

这样实现,用起来不方便,写起来也不够优雅。 我们可以用枚举类(Enum)来更好的实现它。

from enum import Enum


class StatusEnum(Enum):
    OK = (0, "成功")
    ERROR = (-1, "失败")

取值是这样的:

>>> StatusEnum.OK
<StatusEnum.OK: (0, '成功')>
>>> StatusEnum.OK.name
'OK'
>>> StatusEnum.OK.value
(0, '成功')

现在想分别取到状态码的code和msg还是比较麻烦,我们可以把枚举类改造下。

from enum import Enum


class BaseEnum(Enum):

    @property
    def code(self):
        return self.value[0]

    @property
    def msg(self):
        return self.value[1]


class StatusEnum(BaseEnum):
    OK = (0, "成功")
    ERROR = (-1, "失败")

这个时候我们就可以这么取用:

data = {
    "code": StatusEnum.OK.code,
    "msg": StatusEnum.OK.msg
}

就很Pythonic~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值