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