抽象类介绍

目录

一、先看一个问题

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

相关推荐
ZTLJQ14 小时前
数据的基石:Python中关系型数据库完全解析
开发语言·数据库·python
FreakStudio15 小时前
lvgl-micropython、lv_micropython和lv_binding_micropython到底啥关系?一文读懂
python·单片机·嵌入式·面向对象·电子diy
小江的记录本15 小时前
【Redis】Redis全方位知识体系(附《Redis常用命令速查表(完整版)》)
java·数据库·redis·后端·python·spring·缓存
dinl_vin16 小时前
Python 数据分析入门系列(一):从NumPy开始
python·数据分析·numpy
小陈工16 小时前
2026年3月26日技术资讯洞察:WebAssembly崛起、AI代码质量危机与开源安全新挑战
人工智能·python·安全·架构·开源·fastapi·wasm
2401_8796938716 小时前
数据分析与科学计算
jvm·数据库·python
明月_清风17 小时前
宿命的对决:深度对比 JavaScript 与 Python 的异步进化论
后端·python
明月_清风17 小时前
别再纠结 Conda 了!2026 年,uv 才是 Python 环境管理的唯一真神
后端·python
Thomas.Sir17 小时前
第一章:Python3 基础入门:从零基础到实战精通
python·ai
telllong17 小时前
BeeWare:Python原生移动应用开发
开发语言·python