强烈推荐使用isinstance()方法代替type(),以下两个示例讲解为什么不使用type(),如果看完觉得还不满意可以去http://www.chenxm.cc/post/429…
代码示例额2:
import typesclass UserInt(int):
def __init__(self, val=0):
self.val = int(val)
i = 1
n = UserInt(2)
print(type(i) is type(n)) # False
这就说明i和n的类型是不一样的,而实际上UserInt是继承自int的,所以这个判断是存在问题的,当我们对Python内建类型进行扩展的时候,type返回的结果就不够准确了。这就说明i和n的类型是不一样的,而实际上UserInt是继承自int的,所以这个判断是存在问题的,当我们对Python内建类型进行扩展的时候,type返回的结果就不够准确了。
代码示例3:
class A():
pass
class B():
pass
a = A()
b = B()
print(type(a) is type(b)) # True
type比较的结果a和b的类型是一样的,结果明显是不准确的。这种古典类的实例,type返回的结果都是一样的,而这样的结果不是我们想要的。对于内建的基本类型来说,使用tpye来检查是没有问题的,可是当应用到其他场合的时候,type就显得不可靠了。
转自:https://segmentfault.com/q/1010000000127305
本文通过两个代码示例对比了isinstance()与type()方法在类型判断上的差异,指出在Python内建类型扩展时,type()可能返回不准确的结果,而isinstance()则能更准确地判断实例是否属于特定类或其子类。
410

被折叠的 条评论
为什么被折叠?



