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实现的最近最少使用算法
Jul 10 Python
python开发中range()函数用法实例分析
Nov 12 Python
使用Python3 编写简单信用卡管理程序
Dec 21 Python
flask + pymysql操作Mysql数据库的实例
Nov 13 Python
Python生成8位随机字符串的方法分析
Dec 05 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
Aug 23 Python
使用python写一个自动浏览文章的脚本实例
Dec 05 Python
python global和nonlocal用法解析
Feb 03 Python
Python如何使用OS模块调用cmd
Feb 27 Python
Python 实现使用空值进行赋值 None
Mar 12 Python
500行python代码实现飞机大战
Apr 24 Python
python中的random模块和相关函数详解
Apr 22 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 array_merge函数使用需要注意的一个问题
2015/03/30 PHP
PHP访问数据库集群的方法小结
2016/03/14 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
2019/01/10 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
jquery插件ajaxupload实现文件上传操作
2015/12/09 Javascript
详解angular2采用自定义指令(Directive)方式加载jquery插件
2017/02/09 Javascript
Vue.js对象转换实例
2017/06/07 Javascript
JS动态添加的div点击跳转到另一页面实现代码
2017/09/30 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
2018/09/28 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
微信小程序带动画弹窗组件使用方法详解
2018/11/27 Javascript
Vue中实现回车键切换焦点的方法
2020/02/19 Javascript
Python RuntimeError: thread.__init__() not called解决方法
2015/04/28 Python
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
python实现高斯判别分析算法的例子
2019/12/09 Python
Python super()函数使用及多重继承
2020/05/06 Python
Python 没有main函数的原因
2020/07/10 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
2020/09/18 Python
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
Made in Design德国:设计师家具、灯具和装饰
2019/10/31 全球购物
运动会跳远广播稿
2014/02/04 职场文书
面试自我介绍演讲稿
2014/04/29 职场文书
《桃林那间小木屋》教学反思
2014/05/01 职场文书
说明书怎么写
2014/05/06 职场文书
美食节目策划方案
2014/05/31 职场文书
启动仪式策划方案
2014/06/14 职场文书
代办社保委托书范文
2014/10/06 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
关于安全的广播稿
2014/10/23 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
《和时间赛跑》读后感3篇
2019/12/16 职场文书
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js