Python2和Python3中@abstractmethod使用方法


Posted in Python onFebruary 04, 2020

这篇文章主要介绍了Python2和Python3中@abstractmethod使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

抽象方法:

抽象方法表示基类的一个方法,没有实现,所以基类不能实例化,子类实现了该抽象方法才能被实例化。
Python的abc提供了@abstractmethod装饰器实现抽象方法,下面以Python3的abc模块举例。

@abstractmethod:

基类Foo的fun方法被@abstractmethod装饰了,所以Foo不能被实例化;子类SubA没有实现基类的fun方法也不能被实例化;子类SubB实现了基类的抽象方法fun所以能实例化。

完整代码:

在Python3.4中,声明抽象基类最简单的方式是子类话abc.ABC;Python3.0到Python3.3,必须在class语句中使用metaclass=ABCMeta;Python2中使用__metaclass__=ABCMeta

Python3.4 实现方法:

from abc import ABC, abstractmethod


class Foo(ABC):
  @abstractmethod
  def fun(self):
    '''please Implemente in subclass'''
class SubFoo(Foo):
  def fun(self):
    print('fun in SubFoo')

a = SubFoo()
a.fun()

Python3.0到Python3.3的实现方法:

from abc import abstractmethod, ABCMeta

class Bar(metaclass=ABCMeta):
  @abstractmethod
  def fun(self):
    '''please Implemente in subclass'''
class SubBar(Bar):
  def fun(self):
    print('fun in SubBar')


b = SubBar()
b.fun()

Python2的实现方法:

from abc import ABCMeta, abstractmethod


class FooBar():
  __metaclass__ = ABCMeta
  @abstractmethod
  def fun(self):
     '''please Implemente in subclass'''
class SubFooBar(FooBar):
  def fun(self):
    print('fun in SubFooBar')
    
a = SubFooBar()
a.fun()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python发送以整个文件夹的内容为附件的邮件的教程
May 06 Python
Python中常用信号signal类型实例
Jan 25 Python
Python列表解析配合if else的方法
Jun 23 Python
启动Atom并运行python文件的步骤
Nov 09 Python
pycharm 解除默认unittest模式的方法
Nov 30 Python
Python字符串的全排列算法实例详解
Jan 07 Python
Python/Django后端使用PIL Image生成头像缩略图
Apr 30 Python
python登录WeChat 实现自动回复实例详解
May 28 Python
python实现连续变量最优分箱详解--CART算法
Nov 22 Python
Python3直接爬取图片URL并保存示例
Dec 18 Python
Python如何通过百度翻译API实现翻译功能
Apr 02 Python
django实现日志按日期分割
May 21 Python
python如何求数组连续最大和的示例代码
Feb 04 #Python
tensorflow 实现自定义layer并添加到计算图中
Feb 04 #Python
TensorFlow实现自定义Op方式
Feb 04 #Python
tensorflow使用指定gpu的方法
Feb 04 #Python
TensorFlow梯度求解tf.gradients实例
Feb 04 #Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 #Python
tensorflow 查看梯度方式
Feb 04 #Python
You might like
PHP实现查询两个数组中不同元素的方法
2016/02/23 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
php常用字符串查找函数strstr()与strpos()实例分析
2019/06/21 PHP
PHP7 整型处理机制修改
2021/03/09 PHP
javascript 闭包
2011/09/15 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
简介JavaScript中setUTCSeconds()方法的使用
2015/06/12 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
深入浅析JavaScript中prototype和proto的关系
2015/11/15 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
AngularJS ng-repeat数组有重复值的解决方法
2016/10/23 Javascript
js实现符合国情的日期插件详解
2017/01/19 Javascript
jQuery实现Select下拉列表进行状态选择功能
2017/03/30 jQuery
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
[02:53]2018年度DOTA2最佳战队-完美盛典
2018/12/17 DOTA
python备份文件的脚本
2008/08/11 Python
python使用urllib模块开发的多线程豆瓣小站mp3下载器
2014/01/16 Python
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
在Python的Flask中使用WTForms表单框架的基础教程
2016/06/07 Python
Python查询IP地址归属完整代码
2017/06/21 Python
Python 函数基础知识汇总
2018/03/09 Python
python logging重复记录日志问题的解决方法
2018/07/12 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
2020/04/27 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
Python类class参数self原理解析
2020/11/19 Python
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
西班牙美妆电商:Perfume’s Club(有中文站)
2018/08/08 全球购物
C#的几个面试问题
2016/05/22 面试题
美化环境标语
2014/06/20 职场文书
护士找工作求职信
2014/07/02 职场文书
艺术学院毕业生自荐信
2014/07/05 职场文书
农村党支部书记四风问题个人对照检查材料
2014/09/21 职场文书
小学教师工作总结2015
2015/04/07 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技