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实现根据图标提取分类应用程序实例
Sep 28 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
Apr 23 Python
Python数据分析库pandas基本操作方法
Apr 08 Python
Django中日期处理注意事项与自定义时间格式转换详解
Aug 06 Python
使用python获取邮箱邮件的设置方法
Sep 20 Python
python性能测量工具cProfile使用解析
Sep 26 Python
python3中sorted函数里cmp参数改变详解
Mar 12 Python
python学习将数据写入文件并保存方法
Jun 07 Python
基于python实现matlab filter函数过程详解
Jun 08 Python
详解Django的MVT设计模式
Apr 29 Python
Python爬虫中urllib3与urllib的区别是什么
Jul 21 Python
python代码实现扫码关注公众号登录的实战
Nov 01 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程序员必须清楚的问题汇总
2014/12/18 PHP
PHP中文编码小技巧
2014/12/25 PHP
PHP使用PDO调用mssql存储过程的方法示例
2017/10/07 PHP
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
jquery移动listbox的值原理及代码
2013/05/03 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
快速掌握Node.js模块封装及使用
2016/03/21 Javascript
nodejs获取微信小程序带参数二维码实现代码
2017/04/12 NodeJs
微信小程序 生命周期函数详解
2017/05/24 Javascript
微信小程序报错: thirdScriptError的错误问题
2020/06/19 Javascript
微信小程序实现多图上传
2020/06/19 Javascript
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
python中星号变量的几种特殊用法
2016/09/07 Python
Python使用pylab库实现画线功能的方法详解
2017/06/08 Python
Python3使用SMTP发送带附件邮件
2020/06/16 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
2019/09/07 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
keras之权重初始化方式
2020/05/21 Python
详解Python模块化编程与装饰器
2021/01/16 Python
《赠汪伦》教学反思
2014/04/12 职场文书
食品安全标语
2014/06/07 职场文书
服务标语大全
2014/06/18 职场文书
校园文化艺术节宣传标语
2014/10/09 职场文书
工地材料员岗位职责
2015/04/11 职场文书
常住证明范本
2015/06/23 职场文书
2016庆祝教师节新闻稿
2015/11/25 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
python实现简单的井字棋
2021/05/26 Python
MySQL创建管理LIST分区
2022/04/13 MySQL
python如何读取和存储dict()与.json格式文件
2022/06/25 Python