擅长:python、mysql、java
<p>如果要检查类型是否相等,则应使用<code>is</code>运算符</strong>。</p>
<p>示例:我们可以创建下一个愚蠢的元类</p>
<pre><code>class StupidMetaClass(type):
def __eq__(self, other):
return False
</code></pre>
<p>然后根据它来上课:</p>
<ul>
<li><p>在Python 2中</p>
<pre><code>class StupidClass(object):
__metaclass__ = StupidMetaClass
</code></pre></li>
<li><p>在Python 3中</p>
<pre><code>class StupidClass(metaclass=StupidMetaClass):
pass
</code></pre></li>
</ul>
<p>那么简单的检查</p>
<pre><code>StupidClass == StupidClass
</code></pre>
<p>返回<code>False</code>,而下一个检查返回预期的<code>True</code>值</p>
<pre><code>StupidClass is StupidClass
</code></pre>
<p>因此我们可以看到<code>==</code>运算符可以被重写,而没有简单的方法来改变<code>is</code>运算符的行为。</p>