Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何正确记录python枚举元素?_Python_Python 3.x_Enums_Documentation - Fatal编程技术网

如何正确记录python枚举元素?

如何正确记录python枚举元素?,python,python-3.x,enums,documentation,Python,Python 3.x,Enums,Documentation,我知道我可以像添加任何其他类一样向枚举类型添加Python docstring。但是如何向该类型的元素添加文档 据我所知,有三种可能性: class MyEnum(Enum): """ This is my enum type. """ """ Variant 1 """ a = 0, b = 1, # variant 2 c = 2, """ variant 3 """ 但没有一个能真正始终如一地发挥作用。 如果在

我知道我可以像添加任何其他类一样向枚举类型添加Python docstring。但是如何向该类型的元素添加文档

据我所知,有三种可能性:

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
类型的docstring('这是我的枚举类型')。Pycharm可以在其快速文档预览中显示变体3,但包含引号和超出列换行的较长注释将无法正确显示


关于如何记录Python枚举元素,是否有首选方法或约定?

如果值本身并不重要,请参阅。如果这些值很重要,您可以自定义该答案或使用
aenum
1库:

其结果是:

>>> MyEnum.b.value
1
>>> MyEnum.b.__doc__
'another for b'
但是,我不知道哪种IDE(如果有的话)支持使用枚举成员文档字符串



1披露:我是、和库的作者。

您应该知道,带三个引号的字符串仍然是字符串,并且值后的逗号导致它们被计算为元组。您的
MyEnum.a
具有值
(0,)
,而
MyEnum.c
具有值
(2,'变量3')
!哇,谢谢你,Patrick,我甚至没有想到这一点,尽管现在你已经指出了这一点,但这一点非常明显。
inspect.getdoc()
返回的是你的
MyEnum
类的docstring,因此在Python中处理它们的方式是正确的。记录值的方式严格地说是您想要的方式,因此没有“适当”的方法来做。但我不想要类型的docstring,我想要元素的docstring。为什么不以自记录的方式命名枚举变量本身,例如,用
VARIANT\u a
替换
a
。谢谢Ethan!谢谢你在副本上做标记。我没有发现这个问题,而且在我提出这个问题时,它肯定没有出现在建议中。@thrau:不用担心,很乐意提供帮助。如果我已经定义了一个自定义的init函数,这将如何工作?将
doc=None
作为
的最后一个参数,然后包括一份文件作为每个成员声明的最后一部分。答案中的链接有一个例子。
>>> MyEnum.b.value
1
>>> MyEnum.b.__doc__
'another for b'