Python-issubclass()、isinstance()

  1. issubclass()、isinstance()
    1. issubclass()
    2. isinstance()

issubclass()、isinstance()

issubclass()

用于判断类对象是否是另一个(或一组)类对象的子类
issubclass()接收两个参数,第一个参数时类对象,第二个参数时类对象或由类对象组成的元组 。
当第二个实参是类对象的时候,如果第一个实参是第二个实参的子类,则返回True。
当第二个实参是类对象组成的元组时,如果第一个参是第二个实参中任意一个类对象的子类,则返回True。

#!/usr/bin/python3

class A(object):
    pass

class B(object):
    pass

class C(object):
    pass

class D(A):
    pass

class E(D):
    pass

print(issubclass(D, A))    # True
print(issubclass(D, D))    # True  自己是自己的子类
print(issubclass(D, E))    # False
print(issubclass(E, A))    # True


print(issubclass(D, (A, B)))    # True
print(issubclass(D, (B, C)))    # False
print(issubclass(E, (D, A)))    # True
[root@lyucan ~]# ./23.py
True
True
False
True
True
False
True

isinstance()

用于判断实例对象和类对象之间的关系
isinstance()接收两个参数,第一个参数是实例对象,第二个参数是类对象或由类对象组成的元组 。
当第二个实参是类对象的时候,如果第一个实参是第二个实参的实例对象,或者第一个实参是第二个实参的子类的实例对象,则返回True。
当第二个实参是类对象组成的元组时,如果第一个参是第二个实参中任意一个类对象的实例对象,则返回True。

#!/usr/bin/python3

class A(object):
    pass

class B(object):
    pass

class C(object):
    pass

class D(A):
    pass

class E(D):
    pass

print(isinstance(D(), A)) # True
print(isinstance(D(), D)) # True
print(isinstance(D(), E)) # False
print(isinstance(E(), A)) # True


print(isinstance(D(), (A, B))) # True
print(isinstance(D(), (B, C))) # False
print(isinstance(E(), (D, A))) # True
[root@lyucan ~]# ./23.py
True
True
False
True
True
False
True

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 289211569@qq.com