diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2020-09-23 03:57:48 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-23 03:57:48 (GMT) |
commit | 5acc1b5f0b62eef3258e4bc31eba3b9c659108c9 (patch) | |
tree | be8b81e50b5e9af6f164f094caf6756807fc007f | |
parent | 2466a7ae6bb1e4049c3d045a30a0503dda7654c5 (diff) | |
download | cpython-5acc1b5f0b62eef3258e4bc31eba3b9c659108c9.zip cpython-5acc1b5f0b62eef3258e4bc31eba3b9c659108c9.tar.gz cpython-5acc1b5f0b62eef3258e4bc31eba3b9c659108c9.tar.bz2 |
bpo-37062: Enum: add extended AutoNumber example (GH-22349) (GH-22369)
(cherry picked from commit 62e40d8450b9c78346ec3617de7fe3f0ad381510)
Co-authored-by: Ethan Furman <ethan@stoneleaf.us>
-rw-r--r-- | Doc/library/enum.rst | 26 | ||||
-rw-r--r-- | Misc/ACKS | 1 |
2 files changed, 27 insertions, 0 deletions
diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst index 8753416..bd10016 100644 --- a/Doc/library/enum.rst +++ b/Doc/library/enum.rst @@ -888,6 +888,32 @@ Using an auto-numbering :meth:`__new__` would look like:: >>> Color.GREEN.value 2 +To make a more general purpose ``AutoNumber``, add ``*args`` to the signature:: + + >>> class AutoNumber(NoValue): + ... def __new__(cls, *args): # this is the only change from above + ... value = len(cls.__members__) + 1 + ... obj = object.__new__(cls) + ... obj._value_ = value + ... return obj + ... + +Then when you inherit from ``AutoNumber`` you can write your own ``__init__`` +to handle any extra arguments:: + + >>> class Swatch(AutoNumber): + ... def __init__(self, pantone='unknown'): + ... self.pantone = pantone + ... AUBURN = '3497' + ... SEA_GREEN = '1246' + ... BLEACHED_CORAL = () # New color, no Pantone code yet! + ... + >>> Swatch.SEA_GREEN + <Swatch.SEA_GREEN: 2> + >>> Swatch.SEA_GREEN.pantone + '1246' + >>> Swatch.BLEACHED_CORAL.pantone + 'unknown' .. note:: @@ -1678,6 +1678,7 @@ Févry Thibault Lowe Thiderman Nicolas M. Thiéry James Thomas +Reuben Thomas Robin Thomas Brian Thorne Christopher Thorne |