gh-99908: Tutorial: Modernize the 'data-record class' example (GH-100499)

(cherry picked from commit 00afa5066b)

Co-authored-by: JosephSBoyle <48555120+JosephSBoyle@users.noreply.github.com>
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
This commit is contained in:
Miss Islington (bot) 2022-12-24 07:32:00 -08:00 committed by GitHub
parent ba87dae453
commit a7eee898ab
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -737,18 +737,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