10月13日isinstance和issubclass
1.9月7日数据类型基础知识2.9月6号小知识点TODO3.9月7日while和for循环4.9月8日数据类型内置5.9月8号字符串类型6.9月9日字符串内置方法需要掌握的程度7.9月10号列表数据类型内置方法8.9月11日元组数据类型内置方法9.9月11日字典数据类型内置方法10.9月12日集合数据内置方法11.9月12日数据类型分类12.9月12日深浅拷贝13.9月12日深浅拷贝14.9月13日基本的文件处理15.注册和登录加退出16.9月14日猜年龄基础版17.9月14日小结18.9月15日字符编码19.9月15日Python2和Python320.9月15日文件的三种打开模式21.9月15日with管理文件上下文22.9月17日文件的高级应用23.9月17日文件修改的两种方式24.9月17日函数的定义25.9月18日函数的三种定义方式26.9月18日函数的参数27.9月18日可变长参数28.9月18日函数的嵌套29.9月18日名称空间和作用域30.9月19日闭包函数31.9月19日装饰器合集32.9月19日迭代器33.9月20日计算器34.9月20日三元表达式、列表推导式、字典生成式、zip()压缩方法35.9月20日生成器36.9月20日生成器表达式37.9月21日匿名函数38.9月21日猜数字函数版39.9月21日学生管理系统基础版40.9月24日贪吃蛇41.9月24日函数递归42.9月24日炫酷五子棋43.9月25日内置方法44.9月25日模块的四种形式45.9月25日import和from…import…46.9月26日模块的搜索路径47.9月26日python文件的两种用途48.9月26日类与对象之类的属性和函数49.9月26日类与对象之类的属性和方法(函数)大集合50.9月27日人狗大战51.9月27日继承介绍和菱形属性查找52.9月28日例会知识点53.9月28日函数思维图54.10月6日继承重用父类方法55.10月7日绑定方法的特殊之处56.10月7日super的查找顺序57.10月7日类和对象基础小结58.10月7日组合59.10月7日继承和组合的区别以及应用方面60.10月8日多态和多态性61.10月8日封装62.10月8日property的用法63.10月9日类的绑定方法64.10月9日非绑定方法65.10月9日面向对象的小结66.10月12日选课系统
67.10月13日isinstance和issubclass
68.10月15日反射69.10月16日面向对象内置方法70.10月16日元类的基础以及定义方式71.10月14日例会总结72.10月17日元类回顾73.10月17日__new__方法学习以及__call__和__init__的关系74.10月18日单例模式75.10月18日元类、单例模式76.10月19日网络编码基础概念77.10月19日简单的cs架构软件编写78.10月19日略微升级的服务器和客户端79.10月20日subprocess模块80.10月23日粘包、struct模块以及json模块81.10月23日简易服务器与客户端通信82.基于udp协议的服务器和客户端以及特殊点83.10月24日用socketserver模块TCP和UDP的服务器84.网络编程小结85.10月25日socketserver源码分析86.10月25日拓展和进程87.10月26日开启进程以及扩展点88.10月26日Process的join用法目录
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所以不是