您好,匿名用户
随意问技术百科期待您的加入

isinstance() 和 type() 有什么区别?

0 投票

使用type()与isinstance()都能判断变量的类型类型
type(a) is types.StringType 与 isinstance(a, str) 效果是一样的,那么有什么区别吗?

用户头像 提问 2013年 11月14日 @ Gangplank 上等兵 (314 威望)
分享到:

1个回答

0 投票
 
最佳答案

1、isinstance()从名字上看,只能够判断实例是否为那种类型,又或者其基类类型(派生类实例中含有基类的信息)。

2、type()则明确显示出该实例的类型(相当于查看该实例的__class__属性),无论这个类由哪一个类派生而来,type所表示的都是直接生成该实例的类的类型。

#! /usr/bin/python


class Base(object):
	def __init__(self):
		pass

class A(Base):
	def __init__(self):
		pass


baseobj = Base()
a = A()

print isinstance(baseobj,Base)  #True  baseobj is an instance of Base
print isinstance(a,Base)        #True  a is an instance of Base

print type(baseobj) is Base     #True  type of baseobj is Base
print baseobj.__class__ is Base
print type(a) is Base           #False type of a is A

比较有意思的是type和object这两个对象。
看看这个你就会知道

isinstance(type,object) #True
isinstance(object,type) #True

这两个家伙互为对方的实例。你可以点击这里来了解一下。

用户头像 回复 2013年 11月14日 @ Gragas 上等兵 (254 威望)
选中 2013年 9月7日 @Gangplank
提一个问题:

相关问题

0 投票
1 回复 36 阅读
用户头像 提问 2012年 12月1日 @ Cho'Gath 上等兵 (267 威望)
0 投票
1 回复 31 阅读
用户头像 提问 2013年 9月11日 @ Emiya Shirou 上等兵 (438 威望)
0 投票
1 回复 29 阅读
用户头像 提问 2013年 12月11日 @ Thresh 上等兵 (138 威望)
+3 投票
1 回复 84 阅读
0 投票
1 回复 68 阅读
用户头像 提问 2012年 12月1日 @ Wukong 上等兵 (475 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...