在python中,存在这样两组:
isinstance()和type():用来判断某个对象属于某种类型
is和==:用来判断相等的问题,至于是什么相等,我们往后看~
1.isinstace()和type()都是判断某个对象是否属于某个已知的类型,但是它们有如下区别:
- isinstance() 会认为子类是一种父类类型,考虑继承关系。
- type() 不会认为子类是一种父类类型,不考虑继承关系。
- 如果要判断两个类型是否相同,推荐使用 isinstance()。
这下面这个例子中,B继承了A,然后后实例化B得到b,此时b的类型实际上是B,type()显然不认为b是A对象,而isinstance则会往B继承的类去找,并且认为b也属于A类型。
class A:
pass
class B(A):
pass
b = B()
print(isinstance(b,B)) #True
print(isinstance(b,A)) #True
print(type(b) is B) #True
print(type(b) is A