一对一视频直播源码,利用枚举提升代码的可读性
一对一视频直播源码,利用枚举提升代码的可读性
枚举(Enum)是Python自带的特性,用来定义有多个有限值时是绝佳的应用场景。先定义了状态枚举类
import enum class StudyStatusEnum(enum.Enum): no_start = 0 # 未开始 learning = 1 # 学习中 finish = 2 # 已学完 expired = 3 # 过期
然后将前面的逻辑修改成:
if status==StudyStatusEnum.no_start: pass elif status==StudyStatusEnum.leanring: pass if finished: status = StudyStatusEnum.finish
如果一对一视频直播源码中用的ORM框架是SQLAlchemy,那么要同时修改status属性的定义
class Study(Models): # status = db.Column(db.SmallInteger, default=0, comment="学习状态 0 未开始 1 学习中 2 已完成") status = db.Column(Enum(StudyStatusEnum), default=StudyStatusEnum.no_start)
这样修改其实有个问题是,枚举类型在一对一视频直播源码数据库中对应的是字符串类型,而实际上我们希望存一个int类型,对应枚举的value值,而不是枚举的name属性。
所以,这时候我们可以基于SQLAlchemy提供的TypeDecorator来自定义Enum类型叫做IntEnum。
from sqlalchemy import TypeDecorator, Integer class IntEnum(TypeDecorator): """ 整数枚举类型 主要用于状态等场景 """ impl = Integer def __init__(self, enumtype, *args, **kwargs): super().__init__(*args, **kwargs) self._enumtype = enumtype def process_bind_param(self, value, dialect): # 入库时调用此方法,返回的是枚举的value return value.value def process_result_value(self, value, dialect): # 从数据库加载到内存时的值,返回的一个枚举实例 return self._enumtype(value)
我们只需要重写这三个方法,即可已实现一个可以保存int类型的枚举。
status = db.Column(IntEnum(StudyStatusEnum), default=StudyStatusEnum.no_start)
以上就是一对一视频直播源码,利用枚举提升代码的可读性, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2023-06-29 直播平台源代码,TextView文本折叠查看显示更多效果
2023-06-29 直播平台制作,使用动画设置ProgressBar进度
2023-06-29 直播app开发搭建,搜索框+含搜索历史记录
2022-06-29 直播软件开发,Android自定义简单的音频波谱view
2022-06-29 直播平台开发,进入可视区域执行动画、动效、添加样式类名
2022-06-29 短视频平台搭建,淡入淡出 支持左滑右滑轮播图