也许我的设计完全不正常,但是如果我有两个可比较的派生类对象,但是类D1基本上总是>;类D2。(比如把常春藤桥和286相比)。如果不使用isinstance(D2),我如何实现类D1的比较来反映这一点呢?在
我看到了这个: Comparing two objects 和 If duck-typing in Python, should you test isinstance?
我可以添加一个“type”属性,然后比较这些类型,但是我也可以使用isinstance。最简单的方法是使用isinstance。。。有更好的建议吗?在
我会这样做:
我会问自己“D2是什么让它总是大于D1?”换言之,它们是否有一些共同的属性,作为比较的基础。如果这个问题没有一个好的答案,那么也许有必要问一下,为这两个对象创建比较是否有意义。在
如果在考虑了这些因素之后,您仍然认为进行比较是一个好主意,那么就使用}并不总是坏事。在
isinstance
。它仍然存在于语言中是有原因的,python一直在抨击那些被认为是不好的做法的东西,这意味着{问题是当不必要地使用isinstance进行类型检查时。换句话说,用户经常在“三思而后行”的上下文中使用它,这是完全没有必要的。在
在这种情况下,如果用户没有在函数中放入足够像Foo的东西,它无论如何都会引发异常。为什么只限于Foo对象?然而,在您的例子中,从概念的角度来看,对象的类型实际上很重要。这就是
isinstance
存在的原因(在我看来)。在相关问题 更多 >
编程相关推荐