From: Ethan Furman Date: Fri, 20 Nov 2015 21:12:26 +0000 (-0800) Subject: Close 25594: advise against accessing Enum members from other members X-Git-Tag: v3.6.0a1~1017 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=748dad5b6a54370c72029afea9e7baa683d1ffe8;p=python Close 25594: advise against accessing Enum members from other members --- diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst index 0fbbf5af79..a76f5a369c 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.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.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,