抽象类介绍

目录

一、先看一个问题

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

相关推荐
Andrew_Xzw13 分钟前
数据结构与算法(快速基础C++版)
开发语言·数据结构·c++·python·深度学习·算法
凤头百灵鸟1 小时前
Python语法基础篇(包含类型转换、拷贝、可变对象/不可变对象,函数,拆包,异常,模块,闭包,装饰器)
python
多多*2 小时前
LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考
linux·开发语言·redis·python·bootstrap·lua
何双新3 小时前
第21讲、Odoo 18 配置机制详解
linux·python·开源
Wish3D3 小时前
阿里云OSS 上传文件 Python版本
开发语言·python·阿里云
阿福不是狗5 小时前
Python使用总结之Mac安装docker并配置wechaty
python·macos·docker
gen_6 小时前
mac环境下的python、pycharm和pip安装使用
python·macos·pycharm
AI视觉网奇6 小时前
pycharm 左右箭头 最近编辑
ide·python·pycharm
思绪无限6 小时前
Pycharm的终端无法使用Anaconda命令行问题详细解决教程
ide·python·pycharm·终端·命令行·anaconda·问题教程
漫步云端-r6 小时前
Pycharm的使用技巧总结
ide·python·pycharm