is 和 isinstance的区别 and issubclass

定义一个子类和父类

class A:
	pass
class B(A):
	pass

  

is

print(type(b) is B)
# 结果: True

print(type(b) is A)
# 结果: False

is 通过"type"可以判断两个类型是否相等, 只会判断绝对相等, 而不去关心父类是谁.

isinstance

print(isinstance(b, B))
#结果: True
print(isinstance(b, A))
#结果: True

isinstance 会对这个对象进行"刨祖坟"式的判断, 先判断本类, 在判断父类, 一直判断, 直到object

issubclass

class A:
	pass
class B(A):
	pass
class C(B):
	pass

print(issubclass(C, B))
# 结果: True

print(issubclass(C, A))
# 结果: True

判断一个是是否是另外一个类的子类, 也是"刨祖坟"式的判断

原文地址:https://www.cnblogs.com/594504110python/p/9405849.html