Commit f75805ed authored by Ethan Furman's avatar Ethan Furman

Issue21738: clarify usage of __new__ in Enum subclasses

parent 0081f23a
...@@ -586,8 +586,7 @@ Avoids having to specify the value for each enumeration member:: ...@@ -586,8 +586,7 @@ Avoids having to specify the value for each enumeration member::
The :meth:`__new__` method, if defined, is used during creation of the Enum The :meth:`__new__` method, if defined, is used during creation of the Enum
members; it is then replaced by Enum's :meth:`__new__` which is used after members; it is then replaced by Enum's :meth:`__new__` which is used after
class creation for lookup of existing members. Due to the way Enums are class creation for lookup of existing members.
supposed to behave, there is no way to customize Enum's :meth:`__new__`.
OrderedEnum OrderedEnum
...@@ -743,7 +742,11 @@ but not of the class:: ...@@ -743,7 +742,11 @@ but not of the class::
>>> dir(Planet.EARTH) >>> dir(Planet.EARTH)
['__class__', '__doc__', '__module__', 'name', 'surface_gravity', 'value'] ['__class__', '__doc__', '__module__', 'name', 'surface_gravity', 'value']
A :meth:`__new__` method will only be used for the creation of the The :meth:`__new__` method will only be used for the creation of the
:class:`Enum` members -- after that it is replaced. This means if you wish to :class:`Enum` members -- after that it is replaced. Any custom :meth:`__new__`
change how :class:`Enum` members are looked up you either have to write a method must create the object and set the :attr:`_value_` attribute
helper function or a :func:`classmethod`. appropriately.
If you wish to change how :class:`Enum` members are looked up you should either
write a helper function or a :func:`classmethod` for the :class:`Enum`
subclass.
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