加正 發表於 2019-12-19 15:53:00

python中isinstance函数

<p>1、描述</p>
<p>python中isinstance()函数,是python中的一个内置函数,用来判断一个函数是否是一个已知的类型,类似type()。</p>
<p>&nbsp;</p>
<p>2、语法</p>
<p>isinstance(object,classinfo)</p>
<p>参数:</p>
<p>object:实例对象</p>
<p>classinfo:可以是直接或者间接类名,基本类型,或者由它们组成的元组。</p>
<p>返回值:如果对象的类型与参数二的类型(classinfo)相同则返回True,否则返回False。</p>
<p>&nbsp;</p>
<p>3、实例&nbsp;</p>
<p>以下是使用isinstance()函数的实例:</p>
<p>a=2</p>
<p>isinstance(a,int) &nbsp; &nbsp; &nbsp; &nbsp;#返回值为True</p>
<p>isinstance(a,str)  #结果返回False</p>
<p>isinstance(a,(str,int,list))  #是元组中的一个,结果返回True</p>
<p>&nbsp;</p>
<p>4、isinstance()与type()的区别</p>
<p>例如在继承上的区别:</p>
<p>isinstance()会认为子类是一种父类类型,考虑继承关系。</p>
<p>type()不会认为子类是一种父类类型,不考虑继承关系。</p>
<p>实验:</p>
<p>class A:</p>
<p>  pass</p>
<p>class B(A):</p>
<p>  pass</p>
<p>isinstance(A(),A) &nbsp; &nbsp; # return True</p>
<p>type(A()) == A &nbsp; &nbsp; &nbsp; &nbsp; # return True</p>
<p>isinstance(B(),A) &nbsp; &nbsp;# return True</p>
<p>Type(B()) &nbsp;== A &nbsp; &nbsp; &nbsp;# return False</p>
<p>我们发现,创建一个A对象,再创建一个继承A对象的B对象,使用 isinstance() 和 type() 来比较 A() 和 A 时,由于它们的类型都是一样的,所以都返回了 True。而B对象继承于A对象,在使用isinstance()函数来比较 B() 和 A 时,由于考虑了继承关系,所以返回了 True,使用 type() 函数来比较 B() 和 A 时,不会考虑 B() 继承自哪里,所以返回了 False。</p>
<p>如果要判断两个类型是否相同,则推荐使用isinstance()。<br><br></p><br><br>
来源:https://www.cnblogs.com/medigrat/p/12068263.html
頁: [1]
查看完整版本: python中isinstance函数