四时宝库

程序员的知识宝库

Python中的类型判断——type()与isinstance()函数

python作为一种面向对象的编程语言,当我们想要了解一个对象的类型的时候,就离不开type()与isinstance()这两个函数。

type()

常用语法:

type(object)

输入一个对象,返回这个对象的类型,例如:

type(1)
# <type 'int'>
type(1.1)
# <class 'float'>
type([1,2,3])
# <class 'list'>

class mytype(object):
    pass
# 上述代码定义了一个类
a = mytype()
# 实例化
print(type(a))
# <class '__main__.mytype'>

isinstance()

isinstance()的用法与type类似,也是用来判断一个已知的类型。

语法:

isinstance(object, classinfo)

参数:

  • object -- 实例对象。
  • classinfo -- 可以是直接或间接类名、基本类型或者由它们组成的元组。

基本类型classinfo主要有:int,float,bool,complex,str,list,dic,set,tuple

用法举例:

isinstance(2,int)
# True
isinstance(2,str)
# False

isinstance(2,(str,int,list)) #可以输入多个类型,如果是其中之一,则返回True
# True

与type()不同的是,isinstance()并非直接输入一个对象返回类型,而是需要输入一个对象以及类名,判断二者是否相同,即返回True或False。

除此之外,他们还有更深层的区别:

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

例如:

class A:
    pass
 
class B(A):
    pass

# 上面两个类中,B是从A继承过来的。

isinstance(A(), A)    # returns True
type(A()) == A        # returns True
isinstance(B(), A)    # returns True   考虑继承关系
type(B()) == A        # returns False  没考虑继承关系

小结

当需要判断对象的类型的时候,可以使用type()或者isinstance(),isinstance()更适用于已知或者预期需要判断的对象是哪种类型,以及需要对比像个对象的类型是否一致的时候使用。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接