I understand that I can add a Python docstring to an enum type as I would any other class. But how do I add documentation to an element of that type?
As far as I can see there are three possibilities:
class MyEnum(Enum):
"""
This is my enum type.
"""
"""
Variant 1
"""
a = 0,
b = 1, # variant 2
c = 2, """ variant 3 """
But none of them really work consistently.
If I call print(inspect.getdoc(MyEnum.a))
in any of the variants, the docstring of the MyEnum
type is returned ('This is my enum type'). Pycharm can show variant 3 in its Quick Documentation preview, but includes the quotes and longer comments that exceed the column wrap will not be shown correctly.
Is there a preferred way or convention on how to document Python enum elements?
By definition, the enumeration member values are unique. However, you can create different member names with the same values.
Enum is a class in python for creating enumerations, which are a set of symbolic names (members) bound to unique, constant values. The members of an enumeration can be compared by these symbolic anmes, and the enumeration itself can be iterated over. An enum has the following characteristics.
Syntax : enum.auto() Automatically assign the integer value to the values of enum class attributes. Example #1 : In this example we can see that by using enum. auto() method, we are able to assign the numerical values automatically to the class attributes by using this method.
By convention, enumeration names begin with an uppercase letter and are singular. The enum module is used for creating enumerations in Python.
If the values themselves are not important, see How do I put docstrings on Enums?. If the values are important you can either customize that answer or use the aenum
1 library:
from aenum import Enum
class MyEnum(Enum):
_init_ = 'value __doc__'
a = 0, 'docstring for a'
b = 1, 'another for b'
c = 2, 'and one for c as well'
which results in:
>>> MyEnum.b.value
1
>>> MyEnum.b.__doc__
'another for b'
However, I do not know which, if any, IDEs support using Enum member doc strings.
1 Disclosure: I am the author of the Python stdlib Enum
, the enum34
backport, and the Advanced Enumeration (aenum
) library.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With