擅长:python、mysql、java
<p>内置模块<a href="https://docs.python.org/3/library/types.html" rel="nofollow noreferrer">^{<cd1>}</a>存储语言中使用的所有类型。它还包含对应于实例方法的<a href="https://docs.python.org/3/library/types.html#types.FunctionType" rel="nofollow noreferrer">^{<cd2>}</a>:</p>
<pre><code>>>> class Foo:
... def bar(self):
... pass
>>> type(Foo.bar) is types.FunctionType
True
</code></pre>
<p>在解释器中调用<code>type(Foo.bar)</code>时,输出是<code><class 'function'></code>,但是这并不一定意味着类的名称是<code>'function'</code>,而是类的表示(<code>__repr__</code>):</p>
<pre><code>>>> type(types.FunctionType).__repr__(type(Foo.bar))
"<class 'function'>"
</code></pre>
<p>正如在注释中指出的<code>types.FunctionType</code>也只包含对在实现级别定义的函数类型的引用。你知道吗</p>
<p><code>FunctionType</code>的类型也是<code>type</code>,也就是说<code>FunctionType</code>是<code>type</code>的实例(所有类都是这样)。你知道吗</p>
<p>还要注意它的特殊性</p>
<pre><code>>>> type(type) is type
True
</code></pre>
<p>这意味着类型是它自己的类(即<code>type.__class__</code>指向它自己)。这是在执行层面实现的。你知道吗</p>