Python 中的抽象类和接口类
【抽象类】
抽象类是一个特殊的类,只能被继承,不能被实例化。它主要用于作为其他类的基类或模板。
抽象类可以包含抽象方法和具体方法。在抽象类中定义的抽象方法必须在子类中进行实现。
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 中的抽象类和接口类的更多相关文章
- python之路----继承的抽象类和接口类
抽象类与接口类 接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数 ...
- Python抽象类和接口类
一.抽象类和接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名) ...
- python开发面向对象基础:接口类&抽象类&多态&钻石继承
一,接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实 ...
- Python面向对象 | 抽象类和接口类
一.抽象类(规范的编程模式) 什么是抽象类 抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化.抽象类的本质还是类,指的是一组类的相似性,而接口只强调函数属性的相似性. 为什么要有抽象类 ...
- python基础 抽象类(接口类)
Python中没有接口.接口类,抽象类:定义 制定一个规范 #必须要导入from abc import ABCMeta,abstractmethod class Payment(metaclass = ...
- python's twenty-first day for me 抽象类和接口类以及多态
归一化设计: 不管是哪一个类的对象,都调用同一个函数去完成相似的功能. class Alipay: def pay(self,money): print('使用支付宝支付了%s' % money) c ...
- 抽象类,接口类,封装,property,classmetod,statimethod
抽象类,接口类,封装,property,classmetod,statimethod(类方法,静态方法) 一丶抽象类和接口类 接口类(不崇尚用) 接口类:是规范子类的一个模板,只要接口类中定义的,就应 ...
- php 抽象类和接口类
PHP中抽象类和接口类都是特殊类,通常配合面向对象的多态性一起使用. 相同: ①两者都是抽象类,都不能实例化. ②只有接口类的实现类和抽象类的子类实现了 已经声明的 抽象方法才能被实例化. 不同: ① ...
- C++中的抽象类和接口
1,在 C++ 语言中,并不直接支持面向对象中的抽象类和接口概念,但是 C++ 语言 却可以间接实现这些概念: 2,什么是抽象类: 1,面向对象中的抽象(其实就是分类)概念: 1,在进行面向对象分析时 ...
- 第7.19节 Python中的抽象类详解:abstractmethod、abc与真实子类
第7.19节 Python中的抽象类详解:abstractmethod.abc与真实子类 一. 引言 前面相关的章节已经介绍过,Python中定义某种类型是以实现了该类型对应的协议为标准的,而不 ...
随机推荐
- 通过内存映射的方式向lcd屏幕输出几个圆
/************************************************* * * file name:color.c * author :momolyl@126.com * ...
- HTB-Permx靶机笔记
Permx靶机笔记 概述 permx靶机是HTB的简单靶机,这台靶机整体考验渗透人员的信息搜集能力,可以收只有信息搜集的快速,才能快速拿到它的flag. 整体是比较简单的靶机 靶机连接:https:/ ...
- sqlserver 索引优化 CPU占用过高 执行分析 服务器检查[转]
SELECT TOP 10 [Total Cost] = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans) ...
- 10-canva绘制数据点
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- redis集群主从之读写分离
redis集群主从之读写分离 1.集群部署 这里就不详细赘述如何部署主从集群了,一般都是使用slaveOf配置来进行初始化配置. 2.与springboot集成实现读写分离 通过注解实现调用层读写分离 ...
- flex数据绑定
1 .方法绑定 [Bindable(event="myFlagChanged")] private function isEnabled():String { if (myF ...
- C语言数据的存储
目录 类型的基本归类 整形在内存中的存储 原码.反码.补码 大小端介绍 练习 浮点型在内存中的存储 浮点数存储的例子 浮点数存储规则 类型的基本归类 整形家族: char unsigned char ...
- 【YashanDB知识库】主备延迟故障分析方法
[标题]主备延迟故障分析方法 [问题分类]故障分析 [关键字]Yashandb.主备延迟 [问题描述]当数据库备机出现回放延迟时,需要通过一些手段分析延迟的原因.通过数据库的系统视图或操作系统监控数据 ...
- 【YashanDB知识库】表收集统计信息默认阈值引起SQL执行效率差
[问题分类]性能优化 [关键字]统计信息,阈值,执行计划 [问题描述]表新增87w数据自动收集统计信息任务没有启动导致SQL执行计划变差 [问题原因分析] CUS_REGISTER_READ 数据总量 ...
- Splay/LCT 学习笔记
唔,其实我不会 Splay,但是我会 LCT. 众所周知,会 LCT 和会 Splay 是两回事,因为 LCT 只需要旋至根即可. 到现在还是不会,但是先把 LCT 的 Splay 写一下吧. 自己复 ...