抽象类介绍

目录

一、先看一个问题

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、如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,否则它仍然是一个抽象类

相关推荐
成成成成成成果2 小时前
揭秘动态测试:软件质量的实战防线
python·功能测试·测试工具·测试用例·可用性测试
天天进步20153 小时前
Python游戏开发引擎设计与实现
开发语言·python·pygame
数据狐(DataFox)3 小时前
CTE公用表表达式的可读性与性能优化
经验分享·python·sql
蹦蹦跳跳真可爱5893 小时前
Python----MCP(MCP 简介、uv工具、创建MCP流程、MCP客户端接入Qwen、MCP客户端接入vLLM)
开发语言·人工智能·python·语言模型
No0d1es3 小时前
第13届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年1月22日真题
python·青少年编程·蓝桥杯·选拔赛
MediaTea4 小时前
Python 库手册:getopt Unix 风格参数解析模块
服务器·开发语言·python·unix
王尼莫啊4 小时前
【立体标定】圆形标定板标定python实现
开发语言·python·opencv
cosX+sinY4 小时前
10 卷积神经网络
python·深度学习·cnn
非极限码农4 小时前
基于Deepseek的语言润色助手API实现与部署指南
python·微服务·自然语言处理
I love studying!!!5 小时前
python基础:用户输入和 while 循环
python