10月13日isinstance和issubclass

isinstance和issubclass

1.issubclass用于判断类与类之间的继承关系:谁是谁的父类,谁是谁的子类

情况一:有个两个类继承情况

我现在假设Bar这个类继承了Foo类

class Foo:
    pass

class Bar(Foo):
    pass


print(issubclass(Bar, Foo))#第一个类Bar是Foo的父类,所以返回Foo是Bar的子类,返回值是true
print(issubclass(Foo,Bar))#这里判断的是Foo是不是Bar的父类,因为Foo是Bar的子类,所以返回false
"""
输出结果为
True
False
"""

情况二:有个三类的继承情况

我现在假设有A,B,C这三个类,同时让C继承了B,B继承了A

class A:
    pass
class B(A):
    pass
class C(B):
    pass

print(issubclass(C, A))#这里的C继承的是B而B是继承A,我验证的是C是不是A的子类,通过继承的逻辑关系,C也是A的子类所以返回true
"""
结果为
true
"""

上述的情况就是验证一个问题父类的子类(B)它的子类(C)是不是父类(A)的子类。结果说明是的。

所以我后面就算有很多的类只要它们的继承顺序是类似一条线的继承,最后一个类都会是最终父类的子类

情况三:判断这些类的是不是object的子类

我直接判断最终的父类A是不是object的子类

class A:
    pass
class B(A):
    pass
class C(B):
    pass

class D(C):
    pass

print(issubclass(A, object))#这里的结果为true,间接说明所有A的子类也是object的子类

上面的结果说明A是object的子类所以只要是继承了A或者继承了A的子类的类都是object的子类(在python2可以这么想)。在python3无论什么类基本都是object的子类,因为python3中没有经典类,只有新式类(object)

2.isinstance用于判断第一个参数是不是第二参数的对象,返回true或者false

具体代码例子:

我先生成了两个类(学生类和老师类),同时我生成两个实例对象(学生对象和老师对象),然后我来判断结果如下:

#isinstance
#判断第一个参数(实例对象)是不是第二个参数(类)的对象,返回true或者false
class student:
    pass

class teacher():
    pass

#生成学生实例对象
stu = student()
#生成老师实例对象
tea=teacher()


print(isinstance(stu, student))#这里判断学生实例对象是不是学生类的对象,结果为True所以是
print(isinstance(tea, student))#这里判断老师实例对象是不是学生类的对象,结果为False所以不是

posted @   scxlzb  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示