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 16 Python
python使用str & repr转换字符串
Oct 13 Python
Python 查看文件的读写权限方法
Jan 23 Python
python爬虫爬取某站上海租房图片
Feb 04 Python
python3读取excel文件只提取某些行某些列的值方法
Jul 10 Python
Django 中使用流响应处理视频的方法
Jul 20 Python
Python list列表中删除多个重复元素操作示例
Feb 27 Python
python excel转换csv代码实例
Aug 26 Python
python使用matplotlib绘制雷达图
Oct 18 Python
详解pandas获取Dataframe元素值的几种方法
Jun 14 Python
Alpine安装Python3依赖出现的问题及解决方法
Dec 25 Python
Python pyecharts案例超市4年数据可视化分析
Aug 14 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 form 表单传参明细研究
2009/07/17 PHP
php中计算时间差的几种方法
2009/12/31 PHP
round robin权重轮循算法php实现代码
2016/05/28 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
Bootstrap每天必学之导航条
2015/11/27 Javascript
基于javascript实现根据身份证号码识别性别和年龄
2016/01/22 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
2016/05/26 Javascript
nodejs 的 session 简单使用
2016/06/06 NodeJs
AngularJs 国际化(I18n/L10n)详解
2016/09/01 Javascript
浅谈JavaScript事件绑定的常用方法及其优缺点分析
2016/11/01 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
2017/03/15 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
2017/05/08 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
vue 的keep-alive缓存功能的实现
2018/03/22 Javascript
vue自定v-model实现表单数据双向绑定问题
2018/09/03 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
vue spa应用中的路由缓存问题与解决方案
2019/05/31 Javascript
微信小程序返回上一页传参并刷新过程解析
2019/12/13 Javascript
Python处理RSS、ATOM模块FEEDPARSER介绍
2015/02/18 Python
python根据时间生成mongodb的ObjectId的方法
2015/03/13 Python
Python中编写ORM框架的入门指引
2015/04/29 Python
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
Python连接mysql数据库的正确姿势
2016/02/03 Python
python结合shell查询google关键词排名的实现代码
2016/02/27 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
Pandas直接读取sql脚本的方法
2021/01/21 Python
美国女士泳装店:Swimsuits For All
2017/03/02 全球购物
日本最大化妆品和美容产品的综合口碑网站:cosme shopping
2019/08/28 全球购物
如何用Laravel包含你自己的帮助函数
2021/05/27 PHP
使用goaccess分析nginx日志的详细方法
2021/07/09 Servers
GoFrame基于性能测试得知grpool使用场景
2022/06/21 Golang