<p>请有人纠正我,如果我错了,但我相信数据类不强制类型。在您的示例中,datetime.datetime(几乎)只是一个注释,除了两个实现细节之外。检查<a href="https://docs.python.org/3/library/dataclasses.html#dataclasses.field" rel="nofollow noreferrer">documentation</a>。具体来说,</p>
<blockquote>
<p>The dataclass() decorator examines the class to find fields. A field is defined as class variable that has a type annotation. With two exceptions described below, nothing in dataclass() examines the type specified in the variable annotation.</p>
</blockquote>
<p>这两个例外与强制数据类型无关:</p>
<blockquote>
<p>Class variables
One of two places where dataclass() actually inspects the type of a field is to determine if a field is a class variable as defined in PEP 526. It does this by checking if the type of the field is typing.ClassVar. If a field is a ClassVar, it is excluded from consideration as a field and is ignored by the dataclass mechanisms. Such ClassVar pseudo-fields are not returned by the module-level fields() function.</p>
</blockquote>
<blockquote>
<p>Init-only variables
The other place where dataclass() inspects a type annotation is to determine if a field is an init-only variable. It does this by seeing if the type of a field is of type dataclasses.InitVar. If a field is an InitVar, it is considered a pseudo-field called an init-only field. As it is not a true field, it is not returned by the module-level fields() function. Init-only fields are added as parameters to the generated <code>__init__()</code> method, and are passed to the optional <code>__post_init__()</code> method. They are not otherwise used by dataclasses.</p>
</blockquote>