擅长:python、mysql、java
<p>这种说法是错误的:</p>
<pre><code>assert( isinstance(i_type, IFactoryType) )
</code></pre>
<p>你应该说:</p>
<pre><code>assert issubclass(i_type, IFactoryType)
</code></pre>
<p><code>ExampleFactoryType</code>的实例将是<code>IFactoryType</code>的实例,但类本身不是其基类的实例</p>
<p>所有python类都是<code>type</code>的实例。甚至类型<code>type</code>本身也是一个实例</p>
<p>也许这有助于您理解类型和实例之间的区别:</p>
<pre><code>obj = ExampleFactoryType()
isinstance(obj, ExampleFactoryType) # True
isinstance(obj, IFactoryType) # True
isinstance(ExampleFactoryType, IFactoryType) # False
issubclass(ExampleFactoryType, IFactoryType) # True
isinstance(ExampleFactoryType, type) # True
isinstance(IFactoryType, type) # True
</code></pre>