版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
1、issubclass函数
isinstance函数:检查第一个参数(子类)是否是第二个参数(父类及父类的父类……)的子类。
# coding:utf-8
class Base(object):
pass
class Foo(Base):
pass
class Foo2(Foo):
pass
print(issubclass(Foo, Base))
print(issubclass(Foo2, Base))
'''
True
True
'''
2、type函数
type函数:返回对象的类型,获取对象是由哪个类创建的
# coding:utf-8
class Base(object):
pass
b = Base()
print(b, type(b))
'''
<__main__.Base object at 0x000002337B1E9630> <class '__main__.Base'>
'''
if type(b) == Base:
print('b是Base类型!')
下面是一个应用的小例子(计算类的数量):
# coding:utf-8
'''
计算类的数量
'''
class Foo1(object):
pass
class Foo2(object):
pass
def f(*args):
foo1_count = 0
foo2_count = 0
for item in args:
if type(item) == Foo1:
foo1_count += 1
else:
foo2_count += 1
return foo1_count, foo2_count # 返回一个元组,等价于 return (foo1_count, foo2_count)
print(f(Foo1(), Foo2(), Foo1(), Foo2, Foo1()))
'''
(3, 2)
'''
ret1, ret2 = f(Foo1(), Foo2(), Foo1(), Foo2, Foo1())
print(ret1, ret2)
'''
3 2
'''
3、isinstance函数
isinstance函数:判断第对象是否是某一个指定类或其及父类的实例。
# coding:utf-8
'''
isinstance函数判断第一个参数(对象)是否是第二个参数(类及所有父类)的实例
'''
class Base(object):
pass
class Foo(Base):
pass
foo = Foo()
print(isinstance(foo, Foo))
print(isinstance(foo, Base))
'''
True
True
'''
b = Base()
print(isinstance(b, Base))
print(isinstance(b, Foo)) # 对象b不是Foo类的实例
'''
True
False
'''