Python抽象类(abc模块)
1、抽象类概念
抽象类是一个特殊的类,只能被继承,不能实例化
2、为什么要有抽象类
其实在未接触抽象类概念时,我们可以构造香蕉、苹果、梨之类的类,然后让它们继承水果这个基类,水果的基类包含一个eat函数。
但是你有没有想过,我们可以将香蕉、苹果、梨实例化,去吃香蕉、苹果、梨。但是我们却不能将水果实例化,因为我们无法吃到叫水果的这个东西。
所以抽象类中只能有抽象方法(没有实现功能),该类不能被实例化,只能被继承,且子类必须实现抽象方法。
3、抽象类的作用
在不同的模块中通过抽象基类来调用,可以用最精简的方式展示出代码之间的逻辑关系,让模块之间的依赖清晰简单。
抽象类的编程,让每个人可以关注当前抽象类的方法和描述,而不需要考虑过多的实现细节,这对协同开发有很大意义,也让代码可读性更高。
4、抽象类的使用
import abc # 利用abc模块实现抽象类class File(metaclass=abc.ABCMeta): # abc.ABCMeta是实现抽象类的一个基础类@abc.abstractmethod # 定义抽象方法,无需实现功能def read(self):passclass Txt(File): # 子类继承抽象类,但是必须定义read方法将抽象类中的read方法覆盖def read(self):print('文本数据的读取方法')txt1 = Txt() txt1.read() txt2 = File() txt2.read()
运行结果如下:
显然将抽象类实例化报错了,得到了我们想要的结果
5、abc模块在Python2&3的兼容问题
为解决兼容性问题,我们需要引入six模块
转载于:https://www.cnblogs.com/Black-rainbow/p/9582826.html
Python抽象类(abc模块)相关推荐
- Python的ABC模块
1.abc模块作用 Python本身不提供抽象类和接口机制,要想实现抽象类,可以借助abc模块.ABC是Abstract Base Class的缩写. 2.模块中的类和函数 abc.ABCMeta 这 ...
- 学习Python的ABC模块
http://yansu.org/2013/06/09/learn-python-abc-module.html 1.abc模块作用 Python本身不提供抽象类和接口机制,要想实现抽象类,可以借助a ...
- Python之abc模块
abc:Abstract Base Classes 作用:在代码中定义和使用抽象基类进行API检查. 1. 为什么使用abc? Abstract base classes由一组接口组成,检查比hasa ...
- Python:抽象基类(abc模块)
抽象基类(abc模块) 介绍 白话理解 实用场景 介绍 该模块提供了一个元类 ABCMeta,可以用来定义抽象类,另外还提供一个工具类 ABC,可以用它以继承的方式定义抽象基类. 装饰器以" ...
- python代码案例详解-第7.20节 案例详解:Python抽象类之真实子类
第7.20节 案例详解:Python抽象类之真实子类 上节介绍了Python抽象基类相关概念,并介绍了抽象基类实现真实子类的步骤和语法,本节结合一个案例进一步详细介绍. 一. 案例说明 本节定义了图形 ...
- python 抽象类分析
2019独角兽企业重金招聘Python工程师标准>>> 最近在看bottle.py源码,里面自定了多个类字典的类.这些类的定义继承了collections中多个抽象类.比如Mutab ...
- Python抽象类介绍
抽象类 什么是抽象类 与java一样,python也有抽象类的概念.抽象类是一种特殊的类,它只能有抽象方法,不能被实例化,在子类继承抽象类时,不能通过实例化使用其抽象方法,必须实现该方法. 抽象类的作 ...
- python 抽象类、抽象方法、接口、依赖注入、SOLIP
python 抽象类.抽象方法.接口.依赖注入.SOLIP 1.程序设计原则:SOLIP SOLIP设计原则 1.单一责任原则(SRP) 一个对象对只应该为一个元素负责 2.开放封闭原则(OCP) 对 ...
- python 抽象类的意义_python之抽象类
1什么是抽象类 与java一样,python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化 2为什么要有抽象类 如果说类是从一堆对象中抽取相同 ...
- 第7.21节 Python抽象类—register注册虚拟子类
上两节介绍了Python抽象类的真实子类的定义和使用,本节介绍另一种抽象类的实现方法:虚拟子类方法. 一. 相关概念 虚拟子类是将其他的不是从抽象基类派生的类"注册"到抽象基 ...
最新文章
- 【Android View绘制体系】invalidate
- python版本的策略模式
- 【STM32】OLED 显示实验代码详解
- 数据中心在疫情期间发挥的作用
- 软考-信息系统项目管理师-信息系统项目管理基础
- Redis Sentinel集群部署
- Node.js Performance
- .net core 下使用StackExchange的Redis库访问超时解决
- strspn php,php返回在字符串中包含 charlist 参数中指定的字符数目的函数strspn()
- 计算机公式or,【转载】 odds、OR和RR的计算公式和实际意义
- html中右边线条怎么写,html5 三角形的线条怎么写
- css中 Span 元素的 width 属性无效果原因及多种解决方案
- 工业大数据分析平台有哪些价值
- 基于C#的socket编程的TCP异步实现
- [Java] 集合类(List、Set、Map的基本使用)
- 谷粒商城:02. 数据库初始化以及SQL语句
- 51单片机开发工具安装
- 破解防复制防刻录光盘
- C4D R18-R21
- 编程语言的分类与关系
热门文章
- Ubuntu做Tomcat服务:insserv: warning: script 'tomcat' missing LSB tags and overrides
- 判断一个js对象是否是Array
- tcp和udp协议的聊天 和udp协议的时间同步机制-----编码
- AC日记——丢瓶盖 洛谷 P1316
- Visual Studio中View页面与Js页面用快捷键互相跳转
- StructureMap 作为 ASP.NET MVC 的 DI 框架的使用实例
- XCode下的iOS单元测试(转)
- 用栈实现队列,实现Enqueue和Dequeue方法
- luogu2014 选课
- jQuery星级评分插件