issubclass、type和issubclass函数 -Python3

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (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
'''

猜你喜欢

转载自blog.csdn.net/Thanlon/article/details/94420952
今日推荐