<p>在上述答案的基础上,以下说明了<code>is_dataclass()</code>的用法:</p>
<p><strong>记住</strong>:传递给<code>is_dataclass()</code>的参数可以是dataclass或dataclass的实例,以便从方法调用中返回<code>True</code>。在</p>
<pre><code>In [1]: from dataclasses import dataclass
In [2]: @dataclass
...: class Bio:
...: name: str
...: age: int
...: height: float
...:
In [3]: from dataclasses import is_dataclass
In [4]: is_dataclass(Bio)
Out[4]: True
In [5]: b = Bio('John', 25, 6.5)
In [6]: is_dataclass(b)
Out[6]: True
</code></pre>
<p>要检查,<code>b</code>是否是dataclass的实例而不是dataclass本身:</p>
^{pr2}$
<p><code>Bio</code>是一个数据类,因此以下表达式的计算结果为<code>False</code>:</p>
<pre><code>In [8]: is_dataclass(Bio) and not isinstance(Bio, type)
Out[8]: False
</code></pre>
<p>让我们检查常规类:</p>
<pre><code>In [9]: class Car:
...: def __init__(self, name, color):
...: self.name = name
...: self.color = color
...:
</code></pre>
<p>我们知道<code>Car</code>不是数据类:</p>
<pre><code>In [10]: is_dataclass(Car)
Out[10]: False
In [11]: c = Car('Mustang', 'Blue')
</code></pre>
<p><code>Car</code>的实例都不是dataclass实例:</p>
<pre><code>In [12]: is_dataclass(c)
Out[12]: False
</code></pre>