]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-99908: Tutorial: Modernize the 'data-record class' example (#100499)
authorJosephSBoyle <48555120+JosephSBoyle@users.noreply.github.com>
Sat, 24 Dec 2022 15:23:24 +0000 (15:23 +0000)
committerGitHub <noreply@github.com>
Sat, 24 Dec 2022 15:23:24 +0000 (15:23 +0000)
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
Doc/tutorial/classes.rst

index 0e5a9402bc50e3250edbf5412feb220f9da648b7..a206ba371976090bf510372412af4ad2f5c23201 100644 (file)
@@ -738,18 +738,24 @@ Odds and Ends
 =============
 
 Sometimes it is useful to have a data type similar to the Pascal "record" or C
-"struct", bundling together a few named data items.  An empty class definition
-will do nicely::
+"struct", bundling together a few named data items. The idiomatic approach
+is to use :mod:`dataclasses` for this purpose::
 
-   class Employee:
-       pass
+    from dataclasses import dataclasses
 
-   john = Employee()  # Create an empty employee record
+    @dataclass
+    class Employee:
+        name: str
+        dept: str
+        salary: int
 
-   # Fill the fields of the record
-   john.name = 'John Doe'
-   john.dept = 'computer lab'
-   john.salary = 1000
+::
+
+    >>> john = Employee('john', 'computer lab', 1000)
+    >>> john.dept
+    'computer lab'
+    >>> john.salary
+    1000
 
 A piece of Python code that expects a particular abstract data type can often be
 passed a class that emulates the methods of that data type instead.  For