isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。
isinstance() 和 type()函数的代码写法如下:
isinstance(object, classinfo)
# object -- 实例对象。
# classinfo -- 类型。
# 如果object 的类型==classinfo,返回 True,否则返回 False。
# _*_ coding: utf-8 _*_
class Student():
def __init__(self, name, subject, score):
self.name = name
self.subject = subject
self.score = score
a = 'papa'
b = 100
c = ["a", "b", "c"]
d = ("papa", "math", "100")
e = {"name": "papa", "subject": "math", "score": "100"}
f = Student("papa", "math", "100")
# isinstance方法
print (isinstance(a, str))
print (isinstance(b, (str,int,list))) # 类型也可以是1个元组,符合其中任意1个既是TRUE
print (isinstance(c, list))
print (isinstance(d, tuple))
print (isinstance(e, dict))
print (isinstance(f, Student))
# type方法
print (type(a), type(b), type(c), type(d), type(e), type(f))
print (type(a) == str)
运行结果:
True
True
True
True
True
True
(<type 'str'>, <type 'int'>, <type 'list'>, <type 'tuple'>, <type 'dict'>, <type 'instance'>)
True
isinstance() 与 type() 区别:
-
type() 不会认为子类是一种父类类型,不考虑继承关系。
-
isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。
class A:
pass
class B(A):
pass
print (isinstance(A(), A)) # returns True
print (type(A()) == A) # returns True
print (isinstance(B(), A)) # returns True
print (type(B()) == A) # returns False