抽象类介绍

目录

一、先看一个问题

1、看一段代码

2、需求分析

二、抽象类的介绍

三、快速入门

四、注意事项和使用细节


一、先看一个问题

1、看一段代码

python 复制代码
class Animal:
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def cry(self):
        # 动物都有叫唤行为,但是这个行为不明确(即不能明确的实现)
        print("不知道是什么动物,不知道是什么叫声...")

2、需求分析

1)当父类的某些方法,需要声明,但是又不明确,如何实现时,怎么办?

2)不需要实例化父类对象,父类主要的是用于设计和制定规范,让其它类来继承并实现,怎么办?

3)解决方案->抽象类

二、抽象类的介绍

1、默认情况下,Python不提供抽象类,Python附带一个模块,该模块为定义抽象基类提供了基础,该模块名称为abc

2、当我们需要抽象基类时,让类继承ABC(abc模块的ABC类),使用@abstractmethod声明抽象方法(@abstractmethod用于声明抽象方法的装饰器,在abc模块中),那么这个类就是抽象类

3、抽象类的价值更多作用是在于设计,是设计者设计好后,让子类继承并实现抽象类的抽象方法

三、快速入门

1)文档:abc --- 抽象基类 --- Python 3.12.5 文档

2)当父类的一些方法不能确定时,可以使用@abstractmethod声明,同时继承ABC类,那么这个类就是抽象类

我们看看如何把Animal做成抽象类,并让子类Tiger实现

python 复制代码
from abc import ABC, abstractmethod
# Animal就是抽象类
class Animal(ABC):
    def __init__(self, name, age):
        self.name = name
        self.age = age
    # cry是一个抽象方法
    @abstractmethod
    def cry(self):
        pass

# 注意:抽象类(含有抽象方法),不能实例化
# TypeError: Can't instantiate abstract class Animal
# animal=Animal("动物",3)

# 编写子类Tiger继承Animal并实现抽象方法
class Tiger(Animal):
    def cry(self):
        print(f"老虎 {self.name} 嗷嗷叫...")

tiger=Tiger("皮皮",2)
tiger.cry()

四、注意事项和使用细节

1、抽象类不能被实例化

2、抽象类需要继承ABC,并且需要至少一个抽象方法

3、抽象类中可以有普通方法

4、如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,否则它仍然是一个抽象类

相关推荐
2601_962885725 小时前
如何用 Python 自动识别股票的支撑位与压力位?
开发语言·python
北冥有鱼被烹6 小时前
VCSEL全景解析:与光模块NPO CPO的关系、市场量化分析与产业链影响
python
caoerzhong6 小时前
中小企业上 WMS 该先上哪几块:JeeWMS 开源 Java 仓库管理系统的分批上线清单
java·python·开源
正在走向自律6 小时前
AI数据分析与可视化:从基础到应用实践
服务器·人工智能·python·机器学习·数据分析·pandas
databook7 小时前
从手动检查到自动监控:一个数据质量工作流的实现
后端·python·数据分析
北冥有鱼被烹9 小时前
砷化镓与磷化铟:光模块的地基——从化学键到AI缺货潮的底层逻辑
人工智能·python
for_ever_love__10 小时前
线性回归与梯度下降——从零手写一个模型
python·机器学习·线性回归·梯度下降
code_whiter11 小时前
7.自动化测试常用函数
python·功能测试
小园子的小菜11 小时前
Python协程深度解析:从原理演进到实战避坑
后端·python
砚底藏山河11 小时前
量化实战:截面因子有效性检验(IC 分析与分层回测)
java·python·金融·maven