diff options
author | Ethan Furman <ethan@stoneleaf.us> | 2015-11-20 21:17:27 (GMT) |
---|---|---|
committer | Ethan Furman <ethan@stoneleaf.us> | 2015-11-20 21:17:27 (GMT) |
commit | 92e5d2f0ebfbfd0a4f11da08df49b752448e29a8 (patch) | |
tree | ca13a76e912cde35ea9879ea3d1eb0ca22c205e7 | |
parent | 875e4fbccac563f1ac15fb353879bf57184084fe (diff) | |
download | cpython-92e5d2f0ebfbfd0a4f11da08df49b752448e29a8.zip cpython-92e5d2f0ebfbfd0a4f11da08df49b752448e29a8.tar.gz cpython-92e5d2f0ebfbfd0a4f11da08df49b752448e29a8.tar.bz2 |
Close issue25594: advise against accessing Enum members from other members
-rw-r--r-- | Doc/library/enum.rst | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst index 18519f0..81f97b3 100644 --- a/Doc/library/enum.rst +++ b/Doc/library/enum.rst @@ -730,18 +730,24 @@ member instances. Finer Points ^^^^^^^^^^^^ -Enum members are instances of an Enum class, and even though they are -accessible as `EnumClass.member`, they are not accessible directly from -the member:: - - >>> Color.red - <Color.red: 1> - >>> Color.red.blue - Traceback (most recent call last): +:class:`Enum` members are instances of an :class:`Enum` class, and even +though they are accessible as `EnumClass.member`, they should not be accessed +directly from the member as that lookup may fail or, worse, return something +besides the :class:`Enum` member you looking for:: + + >>> class FieldTypes(Enum): + ... name = 0 + ... 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`_ class above, those methods will show up in a :func:`dir` of the member, |