Commit 92e5d2f0 authored by Ethan Furman's avatar Ethan Furman

Close issue25594: advise against accessing Enum members from other members

parent 875e4fbc
...@@ -730,18 +730,24 @@ member instances. ...@@ -730,18 +730,24 @@ member instances.
Finer Points Finer Points
^^^^^^^^^^^^ ^^^^^^^^^^^^
Enum members are instances of an Enum class, and even though they are :class:`Enum` members are instances of an :class:`Enum` class, and even
accessible as `EnumClass.member`, they are not accessible directly from though they are accessible as `EnumClass.member`, they should not be accessed
the member:: directly from the member as that lookup may fail or, worse, return something
besides the :class:`Enum` member you looking for::
>>> Color.red
<Color.red: 1> >>> class FieldTypes(Enum):
>>> Color.red.blue ... name = 0
Traceback (most recent call last): ... value = 1
... size = 2
... ...
AttributeError: 'Color' object has no attribute 'blue' >>> FieldTypes.value.size
<FieldTypes.size: 2>
>>> FieldTypes.size.value
2
.. versionchanged:: 3.5
Likewise, the :attr:`__members__` is only available on the class. The :attr:`__members__` attribute is only available on the class.
If you give your :class:`Enum` subclass extra methods, like the `Planet`_ If you give your :class:`Enum` subclass extra methods, like the `Planet`_
class above, those methods will show up in a :func:`dir` of the member, class above, those methods will show up in a :func:`dir` of the member,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment