python面向对象之抽象类
1.学习Python相关软件的安装2.Pip换源及创建虚拟环境3.学习python的计算机基础4.Pycharm常用快捷键大全5.pycharm贴心大tips6.python基础之变量与常量7.python基础之数据类型8.python基础之用户交互9.python基础之基本运算符10.python基础之流程控制语句11.python中级之数据类型内置方法12.python中级之垃圾回收机制13.python中级之列表推导式14.python中级之字符编码15.python中级之文件操作16.python中级之异常处理17.python中级之深浅拷贝18.python高级之函数的定义和调用19.python高级之函数的参数20.python高级之装饰器21.python高级之迭代器22.python高级之函数对象与闭包函数23.python高级之名称空间和作用域24.python高级之模块25.python高级之包26.python高级之软件开发的目录规范27.python高级之生成器28.python面向对象之面向对象编程29.python面向对象之继承与派生
30.python面向对象之抽象类
31.python面向对象之多态与鸭子类型32.python面向对象之绑定与非绑定方法33.python面向对象之反射34.python面向对象之类的内置方法35.python面向对象之元类一、 什么是python的抽象类
Python中的抽象类是具有以下特征的class:
- 它不是用来初始化/实例化的。
- 相反,它是用于充当其它类的父类。
- 它必须继承基抽象类 abc.ABC。
- 它必须包含至少一个抽象方法。
Python中的抽象类,类似于C++中的纯虚类。或者Java中的interface概念。
我们来看下面的例子:
import abc class Animal(metaclass=abc.ABCMeta): @abc.abstractmethod def speak(self): pass
Animal:
class Animal 就是一个抽象类,继承自 metaclass=abc.ABCMeta(抽象类的基类)。
speak():
speak() 是一个抽象方法,它上面的类装饰器 @abc.abstractmethod 就是用来设置它为一个抽象方法。
抽象类的书写步骤:
1、创建一个父类 2、必须导入 import abc 3、父类必须继承一个属性 class Parent(metaclass=abc.ABCMeta): 4、在想要子类中必须实现的方法上面加一个 装饰器 : @abc.abstractmethod 5、子类继承父类,子类必须重写父类中被添加 了 @abc.abstractmethod 的方法
二、 如何使用抽象类
2.1 不能直接从抽象类中生成一个实例
animal = Animal() # this will give us an error
上面的语句会报错,因为直接实例化一个抽象类了。
2.2 可以从抽象类中派生出来具体的类来使用
举例:
import abc class Animal(metaclass=abc.ABCMeta): @abc.abstractmethod def speak(self): pass class Dog(Animal): def speak(self): print('woof') class Cat(Animal): def speak(self): print('bird')
注意的是: 所有派生类,都需要实现抽象类中的抽象方法,在这个例子中是 speak().
2.3 抽象类中的非抽象方法
看下面这个例子:
import abc class Animal(metaclass=abc.ABCMeta): @abc.abstractmethod def speak(self): pass def hello(self): print('hello') class Dog(Animal): def speak(self): print('woof') dog = Dog() dog.speak() # woof dog.hello() # hello
上面这个例子,
speak() 是抽象方法,需要所有派生类都需要去写自己的实现的。
hello() 是普通方法。 派生类可以自己实现,也可以直接访问基类的。
三、抽象类的作用和目的
抽象类的作用,就是为了保证所有的派生类,都实现了它的派生方法,这是通过语法强制保证的。
抽象基类具有以下优点:
- 处理继承问题方面更加规范、系统
- 明确调用之间的相互关系
- 使得继承层次更加清晰
- 限定子类实现的方法
总的来说,抽象类是大型工程的一种设计方法,通过语法层面,来保证类的接口和实现,保证类的封装。
属于设计模式的一类基础组件。
合集:
python零基础从入门到入坟
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏