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 中__name__ = '__main__' 的作用
Jul 05 Python
安装dbus-python的简要教程
May 05 Python
在Django框架中设置语言偏好的教程
Jul 27 Python
Python数据类型学习笔记
Jan 13 Python
Python的Django框架中forms表单类的使用方法详解
Jun 21 Python
Python实现读取json文件到excel表
Nov 18 Python
python topN 取最大的N个数或最小的N个数方法
Jun 04 Python
python os用法总结
Jun 08 Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 Python
Python 如何优雅的将数字转化为时间格式的方法
Sep 26 Python
python中自带的三个装饰器的实现
Nov 08 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
Dec 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
一个php作的文本留言本的例子(二)
2006/10/09 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
2015/03/19 PHP
php 数组元素快速去重
2017/05/05 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
jquery ajax提交表单数据的两种方式
2009/11/24 Javascript
JavaScript中的细节分析
2012/06/30 Javascript
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
AngularJS实现的JSONP跨域访问数据传输功能详解
2017/07/20 Javascript
Vue学习笔记进阶篇之函数化组件解析
2017/07/21 Javascript
js中json对象和字符串的理解及相互转化操作实现方法
2017/09/22 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
2018/07/22 Javascript
JavaScript实现简单音乐播放器
2020/04/17 Javascript
Electron-vue开发的客户端支付收款工具的实现
2019/05/24 Javascript
vue实现配置全局访问路径头(axios)
2019/11/01 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
使用Python实现博客上进行自动翻页
2017/08/23 Python
Django admin美化插件suit使用示例
2017/12/12 Python
python的concat等多种用法详解
2018/11/28 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
2019/02/28 Python
详解python metaclass(元类)
2020/08/13 Python
css3中less实现文字长阴影(long shadow)
2020/04/24 HTML / CSS
单身旅行者的单身假期:Just You
2018/04/08 全球购物
美国隐形眼镜零售商:LensPure
2019/03/10 全球购物
大一新生军训时的自我评价分享
2013/12/05 职场文书
社团文化节策划书
2014/02/01 职场文书
高中军训感言500字
2014/02/24 职场文书
餐饮业员工工作决心书
2014/03/11 职场文书
房产委托公证书
2014/04/08 职场文书
年度优秀员工获奖感言
2014/08/15 职场文书
2015年信访维稳工作总结
2015/04/07 职场文书
2015年女职工工作总结
2015/05/15 职场文书