python - 您如何为具有三个值的状态建模?

标签 python data-modeling models modeling

我有一个可以处于三种状态的东西

(比如)打开、关闭、运行

我将尝试通过两种方式之一对其进行建模,

is_open = Boolean(default=False)
is_running = Boolean(default=False)

并在应用程序代码中禁止状态(例如)is_running=True、is_open = False。

我也可以试试

state=Char(choices=("O", "C", "R"))

有没有更好的方法之一,还有更好的方法吗?

编辑:我正在使用 Python(和 Django)。
编辑 2:阅读下面的答案后,我想我正在尝试以适合持久保存到数据库的形式在 Python 中模拟枚举(没有它们)

最佳答案

在 Python 中处理这个问题的最简单方法是使用字符串常量。我们在添加 inspect.getgeneratorstate() 时正是这样做的到 Python 3.2。该函数可能的返回值是:

GEN_CREATED = 'GEN_CREATED'
GEN_RUNNING = 'GEN_RUNNING'
GEN_SUSPENDED = 'GEN_SUSPENDED'
GEN_CLOSED = 'GEN_CLOSED'

创建一个简单的类作为常量的命名空间是另一个常见的选择(但该类的属性仍然应该是字符串而不是整数)。

在 Python 中,使用整数而不是字符串作为常量的好处微​​乎其微。你在比较速度上损失了一点(但不多,由于哈希缓存和其他字符串比较优化)并且使用稍微多一点的内存(但不多,因为无论目标类型如何,引用都是相同的大小),但大大简化了调试(因为您不需要将整数代码转换为有意义的状态名称 - 您可以只显示字符串值)。

关于python - 您如何为具有三个值的状态建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5703612/

相关文章:

python - UDP 套接字 sendto() 函数

database-design - 为无唯一 ID 的数据开发 Cassandra "schema"

sql - 事实表中重复的维度属性限制了报告中的过滤/显示

python - 不能有多个具有相同选择的模型字段

python - 在没有体素插值的 python mayavi 中绘制体积平面

Python 2.7使用斜纹,正确保存下载的文件

database-design - 网上商店实现 : Status for Orders?

database - 何时将模型拆分为多个数据库表?

python - 如何只允许一个用户看到 "UpdateView"?

javascript - 无法为d3js强制布局网络可视化添加标签