summaryrefslogtreecommitdiffstats
path: root/Doc/whatsnew
diff options
context:
space:
mode:
authorEric V. Smith <ericvsmith@users.noreply.github.com>2021-09-04 18:58:17 (GMT)
committerGitHub <noreply@github.com>2021-09-04 18:58:17 (GMT)
commita1ba3597d2d2dd5e5d73f42b1174ab5e0a2cd224 (patch)
tree209ebe3b990f8f60484168c8190a550f85f3578d /Doc/whatsnew
parent936f6a16b9ef85bd56b18a247b962801e954c30e (diff)
downloadcpython-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.rst61
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