python中isinstance()函数用法详解

isinstance()用来判断一个对象是否是一个已知的类型,isinstance()函数的语法如下:

isinstance(object,classtype)
  • object -- 实例对象。
  • classtype -- 可以是直接或间接类名、基本类型或者由它们组成的元组。
def isinstance(x, A_tuple): # real signature unknown; restored from __doc__
    """
    Return whether an object is an instance of a class or of a subclass thereof.
    
    A tuple, as in ``isinstance(x, (A, B, ...))``, may be given as the target to
    check against. This is equivalent to ``isinstance(x, A) or isinstance(x, B)
    or ...`` etc.
    """
    pass

isinstance()函数的返回值是布尔型,若object的类型是classtype,那么就返回True,否则返回False。

示例代码1:

A = "I love you"
ans = isinstance(A, str)
print("A is str: " + str(ans))

B = ['I love you']
ans = isinstance(B, str)
print("B is str: " + str(ans))

C = ["I love you"]
ans = isinstance(C, list)
print("C is list: " + str(ans))

if not isinstance(C, list):
    print("C is not a list")
else:
    print("C is a list")

运行效果:

示例代码2:

a = 'str'
b = {"name": "张三"}

# 是元组中的一个返回 True
ret1 = isinstance(a, (str, int, list))
print(ret1)

ret2 = isinstance(b, (str, int, list))
print(ret2)

运行结果:

注意:

isinstance() 与 type() 区别:

  • type() 不会认为子类是一种父类类型,不考虑继承关系。
  • isinstance() 会认为子类是一种父类类型,考虑继承关系。

如果要判断两个类型是否相同推荐使用 isinstance()。

示例代码3:

class A(object):
    pass


class B(A):
    pass


print(isinstance(A(), A))  # True
print(type(A()) == A)  # True

print(isinstance(B(), A))  # True
print(type(B()) == A)  # False

运行结果:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值