您的当前位置:首页正文

python3中的抽象类是什么?怎么用?

2024-07-17 来源:画鸵萌宠网

之前讲过接口类后,我们来讲讲它的好兄弟抽象类。听到名字之后,小伙伴就有点害怕它的难度了。小编原来也是这么以为的,学习了完整的资料后,才发现自己是想错了。有了小编为大家探路,大家可以放心的来学习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...

Top