【发布时间】:2018-08-28 16:47:33
【问题描述】:
我知道我可以像添加任何其他类一样将 Python 文档字符串添加到枚举类型。但是如何将文档添加到该类型的元素中?
据我所知,有三种可能:
class MyEnum(Enum):
"""
This is my enum type.
"""
"""
Variant 1
"""
a = 0,
b = 1, # variant 2
c = 2, """ variant 3 """
但它们都没有真正始终如一地工作。
如果我在任何变体中调用print(inspect.getdoc(MyEnum.a)),则会返回MyEnum 类型的文档字符串(“这是我的枚举类型”)。 Pycharm 可以在其快速文档预览中显示变体 3,但包含引号和超出列换行的较长 cmets 将无法正确显示。
对于如何记录 Python 枚举元素是否有首选方式或约定?
【问题讨论】:
-
您应该知道,三重引号字符串仍然是字符串,并且您的值后面的逗号导致它们被评估为元组。你的
MyEnum.a的值是(0,),而MyEnum.c的值是(2, ' variant 3 ')! -
哇,谢谢帕特里克,我什至没有想到这一点,尽管现在你指出了这一点很明显。
-
inspect.getdoc()返回的 is 是您的MyEnum类的文档字符串,因此由于它们在 Python 中的处理方式是正确的。你如何记录价值观就是你想要做的——所以没有“正确”的方法来做。 -
但是我不想要类型的文档字符串,我想要元素的文档字符串。
-
为什么不以自我记录的方式命名枚举变量本身,例如将
a替换为VARIANT_A。
标签: python python-3.x enums documentation