抽象类介绍

目录

一、先看一个问题

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

相关推荐
梧桐树04293 小时前
python常用内建模块:collections
python
Dream_Snowar3 小时前
速通Python 第三节
开发语言·python
蓝天星空5 小时前
Python调用open ai接口
人工智能·python
jasmine s5 小时前
Pandas
开发语言·python
郭wes代码5 小时前
Cmd命令大全(万字详细版)
python·算法·小程序
leaf_leaves_leaf5 小时前
win11用一条命令给anaconda环境安装GPU版本pytorch,并检查是否为GPU版本
人工智能·pytorch·python
夜雨飘零15 小时前
基于Pytorch实现的说话人日志(说话人分离)
人工智能·pytorch·python·声纹识别·说话人分离·说话人日志
404NooFound5 小时前
Python轻量级NoSQL数据库TinyDB
开发语言·python·nosql
天天要nx5 小时前
D102【python 接口自动化学习】- pytest进阶之fixture用法
python·pytest
minstbe5 小时前
AI开发:使用支持向量机(SVM)进行文本情感分析训练 - Python
人工智能·python·支持向量机