转载参考:
python 面试题(高级)_python高级面试题_梦幻python的博客-CSDN博客
cpython pypy_介绍Cython,Pypy Cpython Numba各有什么缺点【面试题详解】_函明的博客-CSDN博客
Cython、PyPy专题开篇 - 知乎
Python抽象类和接口类_python 接口类_代码输入中...的博客-CSDN博客
python中的接口_python 接口_leeyan85的博客-CSDN博客
python接口和抽象类的区别_Python中抽象类和接口的区别_懂点交通的GISer的博客-CSDN博客
目录
1.Cython,Pypy Cpython Numba各有什么缺点
2.谈一谈python的接口类和抽象类
3.关于抽象类和抽象方法
1.Cython,Pypy Cpython Numba各有什么缺点
cpython: 解释器以及 GIL锁
ipython:只是在交互式的
pypy:需要调试运行在cpython上的代码,可能需要改动
jpython:jvm上跑的解释器
2.谈一谈python的接口类和抽象类
抽象类:需要借助模块实现
抽象类是一个特殊的类只能用于被继承,不能被实例化
抽象类是一对类的抽象,而接口类是一对对象中相同内容的抽象,就像永远无法吃到“水果”
抽象类中有抽象方法,该类不能被实例化,只能被继承,茄子类必须有抽象方法
子类必须重写全部的抽象方法,否则报错
Can't instantiate abstract class Txt with abstract methods write
3.关于抽象类和抽象方法
1.子类
2.抽象基类
3.虚拟子类:实现的第三方子类不需要直接继承自基类但是仍然可以声称自己子类中的方法,实现了基类规定的方法
4.直接继承:抽象基类可以被子类直接继承,也可以将其他的“类”注册到其门下当虚拟子类
5.issubclass()
6.issubinstance()
7.抽象类编程作用
用于处理继承方面的问题更加规范系统
明确调用之间的相互关系
抽象类的编程,让每个人可以关注当前抽象类的方法和描述,而不需要考虑过多的实现细节
对协同开发意义很大,也让代码可读性更高
8.metaclass和abc
metaclass: 类的类,python中的类也是类,一切皆对象
metaclass的实例就是类
自己写metaclass类时需要让其继承自type
也就是说metaclass的实例化结果是类,类的实例化结果是instance
metaclass是创建类的模板,这使得你可以自由控制创建类的过程,实现你所需要的功能
abc:abstract base class
主要定义了基本类和最基本的抽象方法,可以为子类定义共有的api,不需要具体实现
虚拟子类是通过调用metaclass是abc.ABCMeta的抽象基类的,Register方法注册到抽象基类门下的,
可以实现抽象基类中的部分api接口,也可以根本不实现,但是issubclass(),issubinstance()进行判断时仍然返回真值
直接继承抽象基类的子类就没有这么灵活。
six:是为了兼容python2.x 和python 3.x 提供的一个模块
six.add_metaclass(MetaClass):可以为两个版本的python方便的添加metaclass,利用python中的abc模块和six模块在类的定义前添加@six.add_metaclass(abc.ABCMeta)