获取对象的信息之内置函数issubclass() 和 isinstance()

获取对象的信息之内置函数issubclass() 和 isinstance()

"""
内置函数issubclass()用于判断类对象与类对象之间的关系
内置函数isinstance()用于判断实例对象与类对象之间的关系
"""
"""
内置函数issubclass接收两个实参
第一个实参是类对象
第二个实参是类对象或由类对象组成的元组
当第二个实参是类对象时,如果第一个实参是第二个实参的子类,那么返回true
当第二个实参是类对象组成的元组时,如果第一个实参是第二个实参中任意一个类对象子类,返回True
"""
class A(object):
    pass

class B(object):
    pass

class C(object):
    pass

class D(A):
    pass

print(issubclass(D, A))
print(issubclass(D, B))

print(issubclass(D, (A, B, C)))
print(issubclass(D, (B, C)))

print(issubclass(bool, int)) # True
print(issubclass(bool, str))

print(issubclass(bool, (str, int, dict)))
print(issubclass(bool, (str, list, dict)))

"""
内置函数isinstance接收两个实参
第一个实参是实例对象
第二个实参是类对象或由类对象组成的元组
当第二个实参是类对象时,如果第一个实参是第二个实参的实例对象,或者第一个实参是第二个实参的子类实例
对象,那么返回True
当第二个实参是类对象组成的元组时,如果第一个实参是第二实参中任意一个类对象或子类的实例对象
那么返回True
"""

print(isinstance(D(), D))
print(isinstance(D(), A))

print(isinstance(D(), (D, B, C)))
print(isinstance(D(), (B, A, C)))
posted @ 2020-04-06 22:31  不知云深处  阅读(171)  评论(0编辑  收藏  举报