Message324003
In the [`enum` module](https://docs.python.org/3/library/enum.html#supported-sunder-names) documentation, some of the `_sunder_` names are on `EnumMeta`, whereas others are on the produced `Enum` class:
> 8.13.15.3.2. Supported `_sunder_` names
> * `_name_` – name of the member
> * `_value_` – value of the member; can be set / modified in __new__
> * `_missing_` – a lookup function used when a value is not found; may be overridden
> * `_ignore_` – a list of names, either as a list() or a str(), that will not be transformed into members, and will be removed from the final class
> * `_order_` – used in Python 2/3 code to ensure member order is consistent (class attribute, removed during class creation)
> * `_generate_next_value_` – used by the Functional API and by auto to get an appropriate value for an enum member; may be overridden
Experimentally, it appears `_name_` and `_value_` are on the `Enum` class, whereas the others are all on the `EnumMeta` class:
In [272]: class Test(enum.Enum): a = 0
In [273]: Test.a._name_
Out[273]: 'a'
In [274]: Test._name
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-274-8d4f758e0fb7> in <module>()
----> 1 Test._name
/group_workspaces/cems2/fiduceo/Users/gholl/anaconda3/envs/FCDR37a/lib/python3.7/enum.py in __getattr__(cls, name)
344 return cls._member_map_[name]
345 except KeyError:
--> 346 raise AttributeError(name) from None
347
348 def __getitem__(cls, name):
AttributeError: _name
In [275]: Test.a._value_
Out[275]: 0
In [276]: Test._value
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-276-a1cd5032d83d> in <module>()
----> 1 Test._value
/group_workspaces/cems2/fiduceo/Users/gholl/anaconda3/envs/FCDR37a/lib/python3.7/enum.py in __getattr__(cls, name)
344 return cls._member_map_[name]
345 except KeyError:
--> 346 raise AttributeError(name) from None
347
348 def __getitem__(cls, name):
AttributeError: _value
In [277]: Test.a._missing_
Out[277]: <bound method Enum._missing_ of <enum 'Test'>>
In [278]: Test._missing_
Out[278]: <bound method Enum._missing_ of <enum 'Test'>>
This is not clear from the documentation. |
|
Date |
User |
Action |
Args |
2018-08-24 14:44:31 | Gerrit.Holl | set | recipients:
+ Gerrit.Holl, docs@python |
2018-08-24 14:44:31 | Gerrit.Holl | set | messageid: <1535121871.11.0.56676864532.issue34487@psf.upfronthosting.co.za> |
2018-08-24 14:44:31 | Gerrit.Holl | link | issue34487 messages |
2018-08-24 14:44:30 | Gerrit.Holl | create | |
|