Describe in detail access to enum values with [] and getattr

This commit is contained in:
Eli Bendersky 2013-04-12 19:54:37 -07:00
parent 455e1fcc45
commit d3c26c354d
1 changed files with 24 additions and 2 deletions

View File

@ -159,7 +159,7 @@ The ``Enum`` class supports iteration. Iteration order is undefined::
>>> [v.name for v in sorted(FiveColors, by_value)]
['red', 'green', 'blue', 'pink', 'cyan']
Iteration order over ``IntEnum`` enumerations are guaranteed to be
Iteration order over `IntEnum`_ enumerations are guaranteed to be
sorted by value.
>>> class Toppings(IntEnum):
@ -185,10 +185,32 @@ Enumeration values are hashable, so they can be used in dictionaries and sets::
>>> apples
{<EnumValue: Colors.green [value=2]>: 'granny smith', <EnumValue: Colors.red [value=1]>: 'red delicious'}
To programmatically access enumeration values, use ``getattr``::
Programmatic access to enum values
----------------------------------
Sometimes it's useful to access values in enumerations programmatically (i.e.
situations where ``Colors.red`` won't do because the exact color is not known
at program-writing time). ``Enum`` allows such access by value::
>>> Colors[1]
<EnumValue: Colors.red [value=1]>
>>> Colors[2]
<EnumValue: Colors.green [value=2]>
For consistency, an ``EnumValue`` can be used in the same access pattern::
>>> Colors[Colors.red]
<EnumValue: Colors.red [value=1]>
>>> Colors[Colors.green]
<EnumValue: Colors.green [value=2]>
If you want to access enum values by *name*, ``Enum`` works as expected with
``getattr``::
>>> getattr(Colors, 'red')
<EnumValue: Colors.red [value=1]>
>>> getattr(Colors, 'green')
<EnumValue: Colors.green [value=2]>
Comparisons
-----------