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获得文件创建时间和修改时间的方法
Jun 30 Python
Python随手笔记之标准类型内建函数
Dec 02 Python
python实现生成字符串大小写字母和数字的各种组合
Jan 01 Python
对django xadmin自定义菜单的实例详解
Jan 03 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
Jun 27 Python
python实现电子书翻页小程序
Jul 23 Python
python使用socket 先读取长度,在读取报文内容示例
Sep 26 Python
Python编写打字训练小程序
Sep 26 Python
TensorFlow实现保存训练模型为pd文件并恢复
Feb 06 Python
PyInstaller运行原理及常用操作详解
Jun 13 Python
浅谈keras使用中val_acc和acc值不同步的思考
Jun 18 Python
解决Python保存文件名太长OSError: [Errno 36] File name too long
May 11 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
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
php取得字符串首字母的方法
2015/03/25 PHP
PHP register_shutdown_function()函数的使用示例
2015/06/23 PHP
Yii核心验证器api详解
2016/11/23 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
基于JQuery模仿苹果桌面的Dock效果(初级版)
2012/10/15 Javascript
js中replace的用法总结
2013/12/27 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
JS中frameset框架弹出层实例代码
2016/04/01 Javascript
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
wxPython框架类和面板类的使用实例
2014/09/28 Python
Python用GET方法上传文件
2015/03/10 Python
python使用nntp读取新闻组内容的方法
2015/05/08 Python
对python 多线程中的守护线程与join的用法详解
2019/02/18 Python
Python基本数据结构之字典类型dict用法分析
2019/06/08 Python
Django全局启用登陆验证login_required的方法
2020/06/02 Python
python 获取字典键值对的实现
2020/11/12 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
Pytorch之扩充tensor的操作
2021/03/04 Python
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
董事长岗位职责
2013/11/30 职场文书
自动化专业职业生涯规划书范文
2014/01/16 职场文书
投资意向书范本
2014/04/01 职场文书
学校督导评估方案
2014/06/10 职场文书
2015教师个人工作总结范文
2015/03/31 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
2015年服务员个人工作总结
2015/05/27 职场文书
超强台风观后感
2015/06/09 职场文书