python的isinstance和type

class A:
      pass


class B(A)
      pass


b=B()

#isinstance可以进行继承关系的判断
print(isinstance(b,B))

#True

print(isinstance(b,A))

#True


print(type(b) is B)

#True

print(type(b) is A)

#False

print(type(b),A,B,b)

#<class '__main__.B'> <class '__main__.A'> <class '__main__.B'> <__main__.B object at 0x7fda94285810>
#type判断类之间的引用地址是否相等,不判断继承关系

在 Python 中,isinstance 和 type 都用于检查对象的类型,但它们有一些区别和联系。

区别

  1. type 函数直接返回对象的类型。例如,如果 obj 是一个对象,type(obj) 会返回该对象的确切类型。

  2. isinstance 函数用于检查一个对象是否是某个类或由某个类派生出来的类的实例。它可以接受一个对象和一个类(或者由多个类组成的元组)作为参数。

例如,如果 obj 是一个对象,class_ 是一个类,isinstance(obj, class_) 会返回一个布尔值,表示 obj 是否是 class_ 的实例或者是 class_ 的子类的实例。

联系

  1. 它们都与对象的类型信息有关,用于在编程中确定对象的类型特征。

  2. 如果 isinstance(obj, type(obj)) ,通常会返回 True ,因为一个对象肯定是它自身实际类型的实例。

下面通过一些例子来更清楚地展示它们的区别:

class Parent:
    pass

class Child(Parent):
    pass

obj1 = Parent()
obj2 = Child()

# type 直接返回对象的确切类型
print(type(obj1))  
print(type(obj2))  

# isinstance 检查对象是否是指定类或其派生类的实例
print(isinstance(obj1, Parent))  
print(isinstance(obj2, Parent))  
print(isinstance(obj2, Child))  

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值