擅长:python、mysql、java
<p>这里的问题不是不变性,而是简单的继承。如果<code>DemoClass</code>是int的一个子类,则为<code>DemoClass</code>类型的每个对象构造一个真的<code>int</code>,并且将直接使用而不调用<code>__int__</code>在任何可以使用int的地方,只要尝试<code>a + 2</code>。在</p>
<p>我宁愿在这里简单地作弊。我只需要使<code>object</code>的<code>DemoClass</code>子类,并在自定义函数后面隐藏内置的<code>isinstance</code>:</p>
<pre><code>class DemoClass(object):
...
def isinstance(obj, cls):
if __builtins__.isinstance(obj, DemoClass) and issubclass(int, cls):
return True
else:
return __builtins__.isinstance(obj, cls)
</code></pre>
<p>然后我可以:</p>
^{pr2}$