优雅地创建具有自我命名的枚举
项目描述
Enumify
快速编写文档化的枚举,或具有成员值的枚举
安装
pip install enumify
什么是Enumify?
Enumify是基于如何让我在声明枚举时变得尽可能懒惰的想法构建的,坦白说!
我不喜欢如果只想将成员作为1:1,则需要重新输入成员名称的想法,如下所示
import enum
class DaysOfWeek(enum.Enum):
MONDAY = "monday"
TUESDAY = "tuesday"
WEDNESDAY = "wednesday"
当然,有一个名为fastcore
的替代方案,特别是mk_class
,它可以像以下那样注解
from fastcore.basics import mk_class
mk_class("DaysOfWeek", {o:o.lower() for o in ["MONDAY", "TUESDAY", "WEDNESDAY"]})
但是我不喜欢DaysOfWeek
类是渗透的,因为它不是一个真正的Enum
,我还有一个目标就是让枚举成员也被文档化。
因此,这是我们之前枚举的最终转换
from enumify import enumify, Member
@enumify
class DaysOfWeek:
MONDAY:Member
TUESDAY:Member
WEDNESDAY:Member
我们可以看到其设置值如下
print(DaysOfWeek.MONDAY)
monday
因此,我们来到了enumify的两个用例
- 创建成员值是成员名称的枚举
- 创建可以被文档化的枚举
我如何使用它?
支持两种“模式”的 enumify
,一种是交互模式,另一种是静态模式。当您处于VSCode或PyLint等环境中时,应使用静态模式,因为这些工具可以利用特定变量或成员下的文档。
如果您正在为枚举开发或使用Jupyter Notebook,则应使用交互模式。
这是什么意思?让我们比较两个示例。
交互模式
在交互模式下,我们不仅可以使用 Member
或 Mem
注释来指定我们命名的成员,还可以通过分配来对该成员进行文档说明。
@enumify(interactive=True)
class DaysOfWeek:
MONDAY:Member = "The first day of the week"
TUESDAY:Member = "The second day of the week"
WEDNESDAY:Member = "The third day of the week"
现在这些成员将具有关联的文档
DaysOfWeek.MONDAY.__doc__
'The first day of the week'
我们甚至可以通过在分配中最后指定它的文档来对非 Member
类型的值进行文档说明
@enumify(interactive=True)
class DaysOfWeek:
MONDAY:Member = "The first day of the week"
TUESDAY:int = 0, "Some number"
DaysOfWeek.TUESDAY.__doc__
'Some number'
但是,当使用VSCode等IDE时,它们将不会显示这些文档。这就是静态模式的作用所在。
静态模式
在静态模式下,我们仍然可以使用 Member
注释,但假设用户将在IDE中工作,因此我们依赖IDE如何注释变量。以下是我们使用此方法的完整 DaysOfWeek
示例
@enumify(interactive=False)
class DaysOfWeek:
MONDAY:Member
"The first day of the week"
TUESDAY:Member
"The second day of the week"
WEDNESDAY:Member
"The third day of the week"
DaysOfWeek.MONDAY
<DaysOfWeek.MONDAY: 'monday'>
assert DaysOfWeek.MONDAY.__doc__ is None
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分布
enumify-0.0.1.tar.gz (12.0 kB 查看哈希值)
构建分布
enumify-0.0.1-py3-none-any.whl (10.3 kB 查看哈希值)
关闭
enumify-0.0.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1ddbcbbc6db9f89f7cee5434393a48031df2968e70256802d25529ffe33851c0 |
|
MD5 | 47bae149d4e3836cc17150c90b6373b6 |
|
BLAKE2b-256 | 2971519aafa65022fd1b604bd0b0cdd077a46e4e0f2096491640c15a3afd0fc6 |
关闭
enumify-0.0.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0c599b51e3b4ac99d57226eb3ad8cf61294590f795da32a685964664081bec4c |
|
MD5 | 148ff2c40d10b2ba579c6e010211abb7 |
|
BLAKE2b-256 | a0f94bfe44ccd0ba72041ba5b18c25d50138e8ea22fd17952b71629e25c78f07 |