Python 中的抽象类和接口类
【抽象类】
抽象类是一个特殊的类,只能被继承,不能被实例化。它主要用于作为其他类的基类或模板。
抽象类可以包含抽象方法和具体方法。在抽象类中定义的抽象方法必须在子类中进行实现。
from abc import abstractmethod, ABCMeta class Fruit(metaclass=ABCMeta): @abstractmethod # 带abstractmethod装饰器, 告诉子类必须实现该方法 def func_1(self): pass @abstractmethod def func_2(self): pass def func_3(self): # 这是一个具体方法,它可以直接在抽象类中实现,也可以在子类中进行重写 print('hell') class Apple(Fruit): # 继承抽象类Fruit,并且需要实现它定义的抽象方法func_1,func_2 def func_1(self): print('func_1') def func_2(self): print('func_2')
【接口】
接口类实际上就是一个规范子类的类。它定义了一个类应该实现的特定方法,本身不实现,由继承它的子类实现。
接口类同抽象类相似,也不能被实例化,都是通过abc模块定义,接口类不能定义具体方法。
【区别】
抽象类:
1.约束子类中必须包含某些方法,属于弱约束
2.抽象类中可以包含抽象方法,也可以有具体的方法
3.子类继承抽象类时,必须实现所有定义的抽象方法
4.一个子类只能继承一个抽象类
5.抽象类可以包含实例变量和类变量
6.抽象类适合用于构建类层次结构
接口类:
1.约束子类中必须包含父类规定的方法 ,属于强约束
2.接口中只能包含抽象方法,不能有具体的方法
3.可以通过多继承实现多个接口
4.接口不能有构造函数
5.接口不能包含变量
6.接口适合用于定义类应该实现的方法
五分钟学个小技能,作者:潘_谈,转载请注明原文链接:https://www.cnblogs.com/123gogogo/p/18093174