diff options
author | Eric V. Smith <ericvsmith@users.noreply.github.com> | 2021-09-04 18:58:17 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-04 18:58:17 (GMT) |
commit | a1ba3597d2d2dd5e5d73f42b1174ab5e0a2cd224 (patch) | |
tree | 209ebe3b990f8f60484168c8190a550f85f3578d /Doc/whatsnew | |
parent | 936f6a16b9ef85bd56b18a247b962801e954c30e (diff) | |
download | cpython-a1ba3597d2d2dd5e5d73f42b1174ab5e0a2cd224.zip cpython-a1ba3597d2d2dd5e5d73f42b1174ab5e0a2cd224.tar.gz cpython-a1ba3597d2d2dd5e5d73f42b1174ab5e0a2cd224.tar.bz2 |
Add What's New for dataclass keyword-only parameters. (GH-28158)
Diffstat (limited to 'Doc/whatsnew')
-rw-r--r-- | Doc/whatsnew/3.10.rst | 61 |
1 files changed, 60 insertions, 1 deletions
diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 70c5140..19ef629 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -983,9 +983,68 @@ they are provided by the underlying curses library. dataclasses ----------- -Add ``slots`` parameter in :func:`dataclasses.dataclass` decorator. +__slots__ +~~~~~~~~~ + +Added ``slots`` parameter in :func:`dataclasses.dataclass` decorator. (Contributed by Yurii Karabas in :issue:`42269`) +Keyword-only fields +~~~~~~~~~~~~~~~~~~~ + +dataclassses now supports fields that are keyword-only in the +generated __init__ method. There are a number of ways of specifying +keyword-only fields. + +You can say that every field is keyword-only: + +.. code-block:: python + + from dataclasses import dataclass + + @dataclass(kw_only=True) + class Birthday: + name: str + birthday: datetime.date + +Both ``name`` and ``birthday`` are keyword-only parameters to the +generated __init__ method. + +You can specify keyword-only on a per-field basis: + +.. code-block:: python + + from dataclasses import dataclass + + @dataclass + class Birthday: + name: str + birthday: datetime.date = field(kw_only=True) + +Here only ``birthday`` is keyword-only. If you set ``kw_only`` on +individual fields, be aware that there are rules about re-ordering +fields due to keyword-only fields needing to follow non-keyword-only +fields. See the full dataclasses documentation for details. + +You can also specify that all fields following a KW_ONLY marker are +keyword-only. This will probably be the most common usage: + +.. code-block:: python + + from dataclasses import dataclass, KW_ONLY + + @dataclass + class Point: + x: float + y: float + _: KW_ONLY + z: float = 0.0 + t: float = 0.0 + +Here, ``z`` and ``t`` are keyword-only parameters, while ``x`` and +``y`` are not. +(Contributed by Eric V. Smith in :issue:`43532`) + .. _distutils-deprecated: distutils |