之前讲过接口类后,我们来讲讲它的好兄弟抽象类。听到名字之后,小伙伴就有点害怕它的难度了。小编原来也是这么以为的,学习了完整的资料后,才发现自己是想错了。有了小编为大家探路,大家可以放心的来学习python3中的抽象类啦。其他的我们就不讲,保留一点神秘,具体内容大家一起学习下。
从设计角度去看,如果类是从现实对象抽象而来的,那么抽象类就是基于类抽象而来的。
从实现角度来看,抽象类与普通类的不同之处在于:抽象类中有抽象方法,该类不能被实例化,只能被继承,且子类必须实现抽象方法。这一点与接口有点类似,但其实是不同的
#一切皆文件 import abc #利用abc模块实现抽象类 class All_file(metaclass=abc.ABCMeta): all_type='file' @abc.abstractmethod #定义抽象方法,无需实现功能 def read(self): '子类必须定义读功能' pass @abc.abstractmethod #定义抽象方法,无需实现功能 def write(self): '子类必须定义写功能' pass # class Txt(All_file): # pass # # t1=Txt() #报错,子类没有定义抽象方法 class Txt(All_file): #子类继承抽象类,但是必须定义read和write方法 def read(self): print('文本数据的读取方法') def write(self): print('文本数据的读取方法') class Sata(All_file): #子类继承抽象类,但是必须定义read和write方法 def read(self): print('硬盘数据的读取方法') def write(self): print('硬盘数据的读取方法') class Process(All_file): #子类继承抽象类,但是必须定义read和write方法 def read(self): print('进程数据的读取方法') def write(self): print('进程数据的读取方法') wenbenwenjian=Txt() yingpanwenjian=Sata() jinchengwenjian=Process() #这样大家都是被归一化了,也就是一切皆文件的思想 wenbenwenjian.read() yingpanwenjian.write() jinchengwenjian.read() print(wenbenwenjian.all_type) print(yingpanwenjian.all_type) print(jinchengwenjian.all_type)
扩展:
不管是抽象类还是接口类:面向对象的开发规范 所有的接口类和抽象类都不能实例化
java :
java里的所有类的继承都是单继承,所以抽象类完美的解决了单继承需求中的规范问题
但对于多继承的需求,由于java本身语法的不支持,所以创建了接口Interface这个概念来解决多继承的规范问题
python中没有接口类:
python中自带多继承 所以我们直接用class来实现了接口类
python中支持抽象类: 一般情况下单继承不能实例化且可以实现python代码
关于拓展里的类知识,小伙伴们还是要着重注意一下,毕竟小编发现这是出错比较多的点。
画鸵萌宠网还为您提供以下相关内容希望对您有帮助:
python下的抽象类的用途和意义?
抽象类是不完整的,并且它只能用作基类。它与非抽象类的不同: 1、抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。 2、允许(...
python3时间处理 —— time模块和datetime模块
datetime模块则进一步丰富了时间处理的功能,包括datetime对象、date对象、time对象、date和time对象的组合,以及timedelta对象(表示时间区间)。timedelta对象拥有三个属性,用于描述时间的差值。同时,datetime模块中还包含datetime.tzinfo对象,用于表示时区信息。tzinfo是一个抽象类,不能直接实例化。在datetime模...
用python做量化交易要学多久(4天学会python量化交易)
Python高级级编编程数据库开发课程内容包括:面向对象介绍、特性、成员变量、方法、封装、继承、多态、类的生成原理、MetaClass、__new__的作用、抽象类、静态方法、类方法、属性方法、如何在程序中使用面向对象思想写程序、选课程序开发、TCP/IP协议介绍、Socket网络套接字模块学习、简单远程命令执行客户端开发、C\S架构...
python支持的数据类型
Python实际上有三类字符串,通常意义的字符串和Unicode字符串实际上都是抽象类basestring的子类。列表:像字符串类型一样,列表类型也是序列式的数据类型,字符串只能由字符组成,而且是不可变的,列表则是能保留任意数目的Python对象的灵活的容器。列表不仅可以包含Python的标准类型,可以用用户定义的对象作为自...
python基础都有哪些内容呢_python基础是什么
Java面向对象:面向对象入门面向对象应用_管理系统类Java常用类、String相关、算法相关面向对象深入(重载、this、static)继承(重写、super、初始化顺序)多态(抽象类和接口、final、克隆和比较接口设计模式、对象和类的生命周期)API:异常、日志集合集合工具类和泛型IOJDBC基础线程网络编程反射NIOJunit Java...
python数组可以存储多少数据(python获取数组所占内存大小)
Python实际上有三类字符串,通常意义的字符串和Unicode字符串实际上都是抽象类basestring的子类。 列表:像字符串类型一样,列表类型也是序列式的数据类型,字符串只能由字符组成,而且是不可变的,列表则是能保留任意数目的Python对象的灵活的容器。列表不仅可以包含Python的标准类型,可以用用户定义的对象作为自己的元素。列表...
python设计模式有多少
在前期推文Python简单工厂模式中有关于简单工厂模式的解读。 根据工厂的抽象程度可分为:工厂方法模式、抽象工厂模式。该模式用于封装和管理对象的创建,是一种创建型模式。 在简单工厂模式中,只提供了一个工厂类,该工厂类处于对产品类进行实例化的中心位置,它知道每一个产品对象的创建细节,并决定何时实例化哪一个产品...
网站后端开发需要学什么(网站后端技术)
3、java后端开发需要学的内容如下:面向对象的知识java是一种面向对象的开发语言,因此熟悉面向对象对学习java很有必要,你需要了解:什么是对象,什么是类,什么是封装,什么是多态,什么是继承,什么是抽象类,什么是接口。4、web后台开发需要学习的知识有HTML、CSS、JavaScript、DOM、Web服务器、服务器...
python面试一般问什么常用设计模式
3. 设计模式的六大原则 1、开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计...
pythonabc有多少组合(python排列组合多少种怎么写)
python基础(abc类)ABC是AbstractBaseClass的缩写。Python本身不提供抽象类和接口机制,要想实现抽象类,可以借助abc模块。abc类中常见的方法有:ABCMeta,abstractmethod,classmethod 这是用来生成抽象基础类的元类。由它生成的类可以被直接继承。通过注册进行具体化抽象类 通过继承具体化抽象类 python算出abc...