diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2019-09-22 10:32:41 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-22 10:32:41 (GMT) |
commit | b4d0b39a9b4cd203bcc5b236dc96456e9658119a (patch) | |
tree | 219e678f19e4c3b6695170ac419c453b13b7b9eb | |
parent | 1d094af716e8ce5e5710e1dfbce7832ba333be55 (diff) | |
download | cpython-b4d0b39a9b4cd203bcc5b236dc96456e9658119a.zip cpython-b4d0b39a9b4cd203bcc5b236dc96456e9658119a.tar.gz cpython-b4d0b39a9b4cd203bcc5b236dc96456e9658119a.tar.bz2 |
bpo-38209: Simplify dataclasses.InitVar by using __class_getitem__(). (GH-16255)
-rw-r--r-- | Lib/dataclasses.py | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/Lib/dataclasses.py b/Lib/dataclasses.py index 9020c90..9135b07 100644 --- a/Lib/dataclasses.py +++ b/Lib/dataclasses.py @@ -199,11 +199,7 @@ _POST_INIT_NAME = '__post_init__' # https://bugs.python.org/issue33453 for details. _MODULE_IDENTIFIER_RE = re.compile(r'^(?:\s*(\w+)\s*\.)?\s*(\w+)') -class _InitVarMeta(type): - def __getitem__(self, params): - return InitVar(params) - -class InitVar(metaclass=_InitVarMeta): +class InitVar: __slots__ = ('type', ) def __init__(self, type): @@ -212,6 +208,9 @@ class InitVar(metaclass=_InitVarMeta): def __repr__(self): return f'dataclasses.InitVar[{self.type.__name__}]' + def __class_getitem__(cls, type): + return InitVar(type) + # Instances of Field are only ever created from within this module, # and only from the field() function, although Field instances are |