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图书管理系统
Apr 05 Python
对pandas中Series的map函数详解
Jul 25 Python
详解python数据结构和算法
Apr 18 Python
浅谈Python小波分析库Pywavelets的一点使用心得
Jul 09 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
Mar 19 Python
解决echarts中饼图标签重叠的问题
May 16 Python
Python模块常用四种安装方式
Oct 20 Python
Python wordcloud库安装方法总结
Dec 31 Python
Pytorch中TensorBoard及torchsummary的使用详解
May 12 Python
Python 可迭代对象 iterable的具体使用
Aug 07 Python
python+pytest接口自动化之token关联登录的实现
Apr 06 Python
Python基本的内置数据类型及使用方法
Apr 13 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中的日期及时间
2006/11/23 PHP
Zend Framework教程之Application用法实例详解
2016/03/14 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
Extjs中常用表单介绍与应用
2010/06/07 Javascript
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
js 函数调用模式小结
2011/12/26 Javascript
JavaScript监听和禁用浏览器回车事件实例
2015/01/31 Javascript
js判断手机端(Android手机还是iPhone手机)
2015/07/22 Javascript
JQuery.Ajax()的data参数类型实例详解
2015/11/20 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
通过点击jqgrid表格弹出需要的表格数据
2015/12/02 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
2017/04/27 Javascript
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
2017/07/30 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
prettier自动格式化去换行的实现代码
2020/08/25 Javascript
Python生成pdf文件的方法
2014/08/04 Python
Python编程之event对象的用法实例分析
2017/03/23 Python
Python复数属性和方法运算操作示例
2017/07/21 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
世界领先的以旅馆为主的在线预订平台:Hostelworld
2016/10/09 全球购物
《桂林山水》教学反思
2014/02/08 职场文书
中西医专业毕业生职业规划书
2014/02/24 职场文书
银行求职自荐信
2014/06/30 职场文书
计算机应用应届生求职信
2014/07/12 职场文书
房屋授权委托书范本
2014/10/07 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书
学习心理学的体会
2014/11/07 职场文书
2016年学校十一国庆节活动总结
2016/04/01 职场文书