擅长:python、mysql、java
<p>我会问自己“D2是什么让它总是大于D1?”换言之,它们是否有一些共同的属性,作为比较的基础。如果这个问题没有一个好的答案,那么也许有必要问一下,为这两个对象创建比较是否有意义。在</p>
<p>如果在考虑了这些因素之后,您仍然认为进行比较是一个好主意,那么就使用<code>isinstance</code>。它仍然存在于语言中是有原因的,python一直在抨击那些被认为是不好的做法的东西,这意味着{<cd1>}并不总是坏事。在</p>
<p>问题是当不必要地使用isinstance进行类型检查时。换句话说,用户经常在“三思而后行”的上下文中使用它,这是完全没有必要的。在</p>
<pre><code>if not isinstance(arg,Foo):
raise ValueError("I want a Foo")
</code></pre>
<p>在这种情况下,如果用户没有在函数中放入足够像Foo的东西,它无论如何都会引发异常。为什么只限于Foo对象?然而,在您的例子中,从概念的角度来看,对象的类型实际上很重要。这就是<code>isinstance</code>存在的原因(在我看来)。在</p>