Python--枚举类型进阶

本文探讨了Python枚举类型在处理数据库状态值时的便利性,通过定义枚举类提高代码可读性。当从数据库获取数字状态值时,可以在model层利用枚举的属性进行转换处理,实现数据的清晰映射。
摘要由CSDN通过智能技术生成

Python的枚举类型用好非常方便,当我们数据种存储的状态值(需要用数字来表示各种各样的状态),这种时候用到枚举类型能使得代码可读性高,让别人能看的懂,。
先看定义的一个枚举类:



from enum import Enum

class Nums(Enum):
    First = 1
    Two = 2
    Three = 3
    Four = 4

    @classmethod
    def num_str(cls, num):
        key_map = {
            cls.First: {
                're': '我是1'
            },
            cls.Two: {
                're': '我是2'
            },
            cls.Three: {
                're': '我是3'
            },
            cls.Four: {
                're': '我是4'
            }
        }
        return key_map[num]['re']

定义的 num_str 方法是为了获取到对应的不同状态的客户端显示。

假设数据库中取出的值为1,这时候,怎么取到对应的num_str
# 获取到枚举类
print(Nums(1))
# 获取到对应的 num_str
print(Nums.num_str(Nums(1)))
# 通过枚举类可以获取到值,这个值就保存在数据库
print(Nums.First.value)
在model 层中,所以可以这样处理

from ten.enums import Nums
from sqlalchemy import Column, Integer, String, SmallInteger
class Test():

    id = Column(Integer, primary_key=True)
    # 状态
    _status = Column('status', SmallInteger, default=1)

    @property
    def status(self):
        return Nums(self._status)

    @status.setter
    def status(self,status):
        self._status = status.value
这样,在读取数据的时候,就根据枚举类型和对象的属性就做出了对应的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>