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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端