【抽象类】

抽象类是一个特殊的类,只能被继承,不能被实例化。它主要用于作为其他类的基类或模板。

抽象类可以包含抽象方法和具体方法。在抽象类中定义的抽象方法必须在子类中进行实现。

from abc import abstractmethod, ABCMeta
class Fruit(metaclass=ABCMeta):
@abstractmethod # 带abstractmethod装饰器, 告诉子类必须实现该方法
def func_1(self):
pass
@abstractmethod
def func_2(self):
pass
def func_3(self): # 这是一个具体方法,它可以直接在抽象类中实现,也可以在子类中进行重写
print('hell') class Apple(Fruit): # 继承抽象类Fruit,并且需要实现它定义的抽象方法func_1,func_2
def func_1(self):
print('func_1') def func_2(self):
print('func_2')

【接口】

接口类实际上就是一个规范子类的类。它定义了一个类应该实现的特定方法,本身不实现,由继承它的子类实现。

接口类同抽象类相似,也不能被实例化,都是通过abc模块定义,接口类不能定义具体方法。

【区别】

抽象类:

1.约束子类中必须包含某些方法,属于弱约束

2.抽象类中可以包含抽象方法,也可以有具体的方法

3.子类继承抽象类时,必须实现所有定义的抽象方法

4.一个子类只能继承一个抽象类

5.抽象类可以包含实例变量和类变量

6.抽象类适合用于构建类层次结构

接口类:

1.约束子类中必须包含父类规定的方法 ,属于强约束

2.接口中只能包含抽象方法,不能有具体的方法

3.可以通过多继承实现多个接口

4.接口不能有构造函数

5.接口不能包含变量

6.接口适合用于定义类应该实现的方法

Python 中的抽象类和接口类的更多相关文章

  1. python之路----继承的抽象类和接口类

    抽象类与接口类 接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数 ...

  2. Python抽象类和接口类

    一.抽象类和接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名) ...

  3. python开发面向对象基础:接口类&抽象类&多态&钻石继承

    一,接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实 ...

  4. Python面向对象 | 抽象类和接口类

    一.抽象类(规范的编程模式) 什么是抽象类 抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化.抽象类的本质还是类,指的是一组类的相似性,而接口只强调函数属性的相似性. 为什么要有抽象类 ...

  5. python基础 抽象类(接口类)

    Python中没有接口.接口类,抽象类:定义 制定一个规范 #必须要导入from abc import ABCMeta,abstractmethod class Payment(metaclass = ...

  6. python's twenty-first day for me 抽象类和接口类以及多态

    归一化设计: 不管是哪一个类的对象,都调用同一个函数去完成相似的功能. class Alipay: def pay(self,money): print('使用支付宝支付了%s' % money) c ...

  7. 抽象类,接口类,封装,property,classmetod,statimethod

    抽象类,接口类,封装,property,classmetod,statimethod(类方法,静态方法) 一丶抽象类和接口类 接口类(不崇尚用) 接口类:是规范子类的一个模板,只要接口类中定义的,就应 ...

  8. php 抽象类和接口类

    PHP中抽象类和接口类都是特殊类,通常配合面向对象的多态性一起使用. 相同: ①两者都是抽象类,都不能实例化. ②只有接口类的实现类和抽象类的子类实现了 已经声明的 抽象方法才能被实例化. 不同: ① ...

  9. C++中的抽象类和接口

    1,在 C++ 语言中,并不直接支持面向对象中的抽象类和接口概念,但是 C++ 语言 却可以间接实现这些概念: 2,什么是抽象类: 1,面向对象中的抽象(其实就是分类)概念: 1,在进行面向对象分析时 ...

  10. 第7.19节 Python中的抽象类详解:abstractmethod、abc与真实子类

    第7.19节 Python中的抽象类详解:abstractmethod.abc与真实子类 一.    引言 前面相关的章节已经介绍过,Python中定义某种类型是以实现了该类型对应的协议为标准的,而不 ...

随机推荐

  1. Unreal使用GooglePAD生成AAB包,并加在fast-follow资源

    1.修改obbfilter,设置需要添加到obb的pak文件 2.修改项目设置,打AAB包 3.cook stage生成所有Paks文件 4.将部分pak文件拷贝到Intermediate/Andro ...

  2. [KEYENCE Programming Contest 2023 Autumn(AtCoder Beginner Contest 325) E

    KEYENCE Programming Contest 2023 Autumn(AtCoder Beginner Contest 325) - AtCoder E E - Our clients, p ...

  3. 3. EMC EMS EMI

    1. 定义 1.1 EMC(Electromagnetic Compatibility) 电磁兼容性(EMC)是指系统正常工作的能力,不受其正常环境中电磁现象的干扰,不产生干扰其他设备的电干扰. 1. ...

  4. 和xshell和crt说再见,认识了一款55k star多端跨平台终端神器,强大酷炫

    一.Tabby简介 Tabby(以前称为Terminus)是一款高度可配置的终端仿真器.SSH 和串行客户端.开源且跨平台,支持在Windows.macOS和Linux系统下使用. 源码下载 http ...

  5. FFmpeg开发笔记(四十七)寒冬下安卓程序员的几个技术转型发展方向

    ​IT寒冬之下,程序员这个职业不再像以往那么吃香,尤其是APP开发的门槛越来越高,使得安卓程序员不得不求变,如果不在技术上及时转型提高,逆水行舟未来不可期呀. 有鉴于此,博主整理了几个可供安卓程序员的 ...

  6. 优秀架构设计与web文档

    架构风格与基于网络的软件架构设计 https://docs.huihoo.com/rest/REST_cn.pdf rfc https://tools.ietf.org/html/rfc2616

  7. 十五分钟两百行代码,手写一个vue项目全局通用的弹框

    前言: 我们在写vue项目时,弹框是非常常用的组件,并且在同一个项目中,弹框大多类似.所以我们可以抽离封装出一个通用的弹框: 因为vue3可向下兼容,所以作者这边会使用vue2的写法,vue3写法大同 ...

  8. vscode注释快捷键

    单行注释 ctrl+/ 多行注释 ctrl+alt+a 文档注释 /** 复制上面一行 ctrl+d 选中段落整体向左或向右缩进 ctrl +[ 或 ctrl + ] 查找 ctrl + f

  9. SpringBoot多环境日志配置

    SpringBoot多环境日志配置 SpringBoot 默认使用 LogBack 日志系统 默认情况下,SpringBoot项目的日志只会在控制台输入. 如果想查询历史日志则无法找到,我们需要一个日 ...

  10. Java并发编程学习前期知识上篇

    Java并发编程学习前期知识上篇 我们先来看看几个大厂真实的面试题: 从上面几个真实的面试问题来看,我们可以看到大厂的面试都会问到并发相关的问题.所以 Java并发,这个无论是面试还是在工作中,并发都 ...