您的当前位置:首页正文

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支持的数据类型

Python实际上有三类字符串,通常意义的字符串和Unicode字符串实际上都是抽象类basestring的子类。列表:像字符串类型一样,列表类型也是序列式的数据类型,字符串只能由字符组成,而且是不可变的,列表则是能保留任意数目的Python对象的灵活的容器。列表不仅可以包含Python的标准类型,可以用用户定义的对象作为自...

python课程内容都有哪些呢?

Python高级级编编程&数据库开发课程内容包括:面向对象介绍、特性、成员变量、方法、封装、继承、多态、类的生成原理、MetaClass、__new__的作用、抽象类、静态方法、类方法、属性方法、如何在程序中使用面向对象思想写程序、选课程序开发、TCP/IP协议介绍、Socket网络套接字模块学习、简单远程命令执行客户端...

python基础都有哪些内容呢_python基础是什么

Java面向对象:面向对象入门面向对象应用_管理系统类Java常用类、String相关、算法相关面向对象深入(重载、this、static)继承(重写、super、初始化顺序)多态(抽象类和接口、final、克隆和比较接口设计模式、对象和类的生命周期)API:异常、日志集合集合工具类和泛型IOJDBC基础线程网络编程反射NIOJunit Java...

python面试一般问什么常用设计模式

3. 设计模式的六大原则 1、开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计...

Python的特点有哪些特点

1、简单 Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。2、易学 Python极其容易上手,因为Python有极其简单的说明文档 。3、速度快 Python 的底层是用 C 语言写的,很多标准库和第三方库也都是用 C 写的...

Python是什么?它有哪些优点?

Python 是一种通用的脚本开发语言,比其他编程语言更加简单、易学,其面向对象特性甚至比Java、C#、.NET更加彻底,因此非常适合快速开发。它的优点:简单:Python 是一种代表简单主义思想的语言。易学:因为 Python 有极其简单的说明文档,因此 Python 极其容易上手。速度快:Python 的底层是用 C 语言写的...

Python有什么优势?

Python拥有丰富的标准库,可以实现各种复杂的任务;3. 高效:Python可以实现高效的程序,可以节省开发时间;4. 可移植性:Python代码可以在多个平台上运行,可以轻松移植到其他系统;5. 开源免费:Python是开源免费的,可以免费使用;6. 可扩展性:Python可以使用C/C++语言扩展,可以提高程序的运行效率。

python语言有什么优势

2. 易学 Python学习简单、上手快,不需要面对复杂的语法环境,即可实现所需功能,学习曲线很低,可以通过命令行交互环境学习Python编程。3. 开源免费 Python所有内容都是开源免费的,可以直接下载安装使用,还可以对其源码进行修改,十分便捷!4. 自由内存管理 Python内存管理是自动完成的,Python开发人员仅需...

python需要学习什么内容?

使用Python创建文件、访问、删除文件 掌握import 语句、From…import 语句、From…import* 语句、方法的引用、Python中的包 ②Python软件开发进阶 能够使用Python面向对象方法开发软件 能够自己建立数据库,表,并进行基本数据库操作 掌握非关系数据库MongoDB的使用,掌握Redis开发 能够独立完成TCP/UDP服务端客户...

零基础学Python应该学习哪些入门知识

编辑器该如何选?同样,推荐 pycharm 社区版,配置简单、功能强大、使用起来省时省心,对初学者友好,并且完全免费!其他编辑器如:notepad++、sublimeText 3、vim 和 Emacs等不推荐了。操作环境?Python 支持现有所有主流操作平台,不管是 windows 还是 mac 还是 linux,都能很好的运行 Python。并且后两者...