Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >抽象类的使用和作用

抽象类的使用和作用

作者头像
罗罗攀
发布于 2021-07-28 03:02:33
发布于 2021-07-28 03:02:33
90500
代码可运行
举报
运行总次数:0
代码可运行

前言

今天我们一起来学习抽象类的使用,以及其作用。

抽象类和抽象方法

首先,我们来看看到底什么是抽象类。

抽象类是一种特殊的类,生来就是作为父类的,具有抽象方法。那我们就来看一下代码,通过代码我们来学习抽象类的定义和使用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import abc


class Foo(metaclass=abc.ABCMeta):

    @abc.abstractmethod
    def test(self):
        pass


class Too(Foo):

    def test(self):
        print('test')


too = Too()
too.test()

foo = Foo()

test
TypeError: Can't instantiate abstract class Foo with abstract methods test

这里的Foo类就被称为抽象类,抽象类必须指定元类(metaclass)为abc模块的ABCMeta,抽象类中定义抽象方法,这里也需要加上装饰器。

通过程序运行结果可知,直接实例化Foo类会报错。

抽象类的作用

定义的抽象类不能直接实例化,抽象方法定义在抽象类中,子类必须要重写这个函数才可以使用。只所以会有抽象基类,这其实正是软件工程中一个很重要的概念,定义接口。我们想想,大型工程需要很多人一起合作开发,我们首先定义好抽象类,把需要的功能和事情定义好,做好接口,然后交给不同的程序员去开发即可。

今天的分享就到这了,我们下期再见~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python面向对象-封装-property-接口-抽象-鸭子类型-03
# 将复杂的丑陋的隐私的细节隐藏到内部,对外提供简单的使用接口 或 # 对外隐藏内部实现细节,并提供访问的接口
suwanbin
2019/09/26
5870
Python 抽象基类 ABC :从实践到优雅
今天我们来聊聊 Python 中的抽象基类(Abstract Base Class,简称 ABC)。虽然这个概念在 Python 中已经存在很久了,但在日常开发中,很多人可能用得并不多,或者用得不够优雅。
Piper破壳
2024/12/25
1780
Python的abc模块XXX
该模块提供了在 Python 中定义 抽象基类 (ABC) 的组件,在 PEP 3119 中已有概述。查看 PEP 文档了解为什么需要在 Python 中增加这个模块。(也可查看 PEP 3141 以及 numbers 模块了解基于 ABC 的数字类型继承关系。)
狼啸风云
2022/04/01
9730
Python抽象类介绍
与java一样,python也有抽象类的概念。抽象类是一种特殊的类,它只能有抽象方法,不能被实例化,在子类继承抽象类时,不能通过实例化使用其抽象方法,必须实现该方法。
鳄鱼儿
2024/05/21
1670
原创 | 从抽象类开始,详解责任链模式
今天我们继续介绍新的设计模式,和上次的链式模式不同,这一次要介绍的责任链模式不仅仅在Python当中有,在很多其他的语言当中同样支持,比如Java。Python和Java当中的这个设计模式是完全一样的,没有任何区别。
TechFlow-承志
2020/09/14
5710
原创 | 从抽象类开始,详解责任链模式
Python面向对象编程-类和对象-抽象类
抽象类是一种特殊的类,它不能直接实例化。抽象类提供了一种将类的实现细节与其接口分离的方法。抽象类可以定义一组必须实现的方法,但是它们的实现细节取决于子类的具体实现。
玖叁叁
2023/04/19
3870
Python之抽象基类建议收藏
  以上为Animal的抽象基类,注意重写了__subclasscheck__(cls, subclass)方法来改变issubclass或者isinstance的行为,__subclasscheck__(cls, subclass)必须为@classmethod
全栈程序员站长
2022/07/14
7090
python3--归一化设计,接口类和抽象类,接口隔离原则,多态
2 声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类继承接口类,并且实现接口中的功能
py3study
2018/08/02
2.6K0
【python设计模式-创建型】抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
西西嘛呦
2020/08/26
4300
【python设计模式-创建型】抽象工厂模式
python分布式环境下的限流器
项目中用到了限流,受限于一些实现方式上的东西,手撕了一个简单的服务端限流器。 服务端限流和客户端限流的区别,简单来说就是: 1)服务端限流 对接口请求进行限流,限制的是单位时间内请求的数量,目的是通过有损来换取高可用。 例如我们的场景是,有一个服务接收请求,处理之后,将数据bulk到Elasticsearch中进行索引存储,bulk索引是一个很耗费资源的操作,如果遭遇到请求流量激增,可能会压垮Elasticsearch(队列阻塞,内存激增),所以需要对流量的峰值做一个限制。 2)客户端限流 限制的是客户端进
用户1225216
2018/03/05
2.3K0
抽象工厂模式
当每个抽象产品都有多于一个的具体子类的时候,工厂角色怎么知道实例化哪一个子类呢?比如每个抽象产品角色都有两个具体产品。抽象工厂模式提供两个具体工厂角色,分别对应于这两个具体产品角色,每一个具体工厂角色只负责某一个产品角色的实例化。每一个具体工厂类只负责创建抽象产品的某一个具体子类的实例。
用户2936342
2018/08/27
2530
Python面向对象编程-类和对象-接口
接口是一种定义类的方法,它指定了一组必须实现的方法。接口提供了一种将类的实现细节与其接口分离的方法。与抽象类不同,接口只包含方法声明,不包含任何实现细节。
玖叁叁
2023/04/19
3480
Python 学习笔记之类「面向对象,超类,抽象」
在面向对象编程中,术语对象大致意味着一系列数据 (属性) 以及一套访问和操作这些数据的方法。
Python技术与生活认知的分享
2018/08/01
8091
Python 学习笔记之类「面向对象,超类,抽象」
Python实现抽象基类的3三种方法
Python的抽象基类类似于Java、C++等面向对象语言中的接口的概念。抽象基类提供了一种要求子类实现指定协议的方式,如果一个抽象基类要求实现指定的方法,而子类没有实现的话,当试图创建子类或者执行子类代码时会抛出异常。这里简单介绍一下Python实现抽象基类的三种方法。
py3study
2020/01/06
9570
Python入门之面向对象之类继承与派生
本章内容     一、继承     二、抽象类     三、继承的实现原理 ======================================================= 一、继承 1. 继承的定义     继承是一种新建类的方式,新建的类被称为子类,子类会继承父类的属性。     在Python中支持,一个子类(派生类——可以继承一个或者多个父类(基类或者超类) 2. 为什么要用继承 继承可以有效减少代码冗余   3. 如何使用继承     继承代码示例 # 继承示例 class F
Jetpropelledsnake21
2018/05/02
9550
Python入门之面向对象之类继承与派生
python高级编程第一讲:深入类和对象
多态的概念是应用于Java和C#这一类强类型语言中,而Python崇尚"鸭子类型"
小海怪的互联网
2019/08/23
6640
python高级编程第一讲:深入类和对象
day 25-1 接口类、抽象类、多态
这是三种动物 tiger      走路  游泳 swan     走路  游泳 飞 oldying  走路  飞
py3study
2020/01/17
4350
Python 模块:abc
模块abc提供了在 Python 中定义 抽象基类 (ABC) 的组件,在 PEP 3119 中已有概述。查看 PEP 文档了解为什么需要在 Python 中增加这个模块。(也可查看 PEP 3141 以及 numbers 模块了解基于 ABC 的数字类型继承关系。)
不可言诉的深渊
2019/07/26
1.3K0
Python OOP-5
12. 所用软件 画图软件:Faststone capture 13. 抽象类 抽象方法:没有具体实现内容的方法称为抽象方法 抽象方法的主要意义是规范了子类的行为和接口 抽象的使用需要借助abc模块 import abc 抽象类:包含抽象方法的类叫做抽象类,通常成为ABC类 抽象类的使用 抽象类可以包含抽象方法,也可以包含具体方法 抽象类中可以有方法也可以有属性 抽象类不允许直接实例化 必须继承才可以使用,且继承的子类必须实现所有继承来的抽象方法 假定子类没有实现所有继承的抽象方法,子类也不能实例化
ruochen
2021/03/02
8270
Python  OOP-5
Python3 的面向对象
# 面向对象 import abc from enum import Enum, unique @unique # unique确保无重复值 class Weekday(Enum): """ 枚举类 """ # 左边为name,右边为value Sun = 0 Mon = 1 Tue = 2 Wed = 3 Thu = 4 Fri = 5 Sat = 6 class Person(metaclass=abc
用户2337871
2020/10/26
3580
相关推荐
python面向对象-封装-property-接口-抽象-鸭子类型-03
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验