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实现udp数据报传输的方法
Sep 26 Python
Python使用ntplib库同步校准当地时间的方法
Jul 02 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
Nov 22 Python
Numpy数组的保存与读取方法
Apr 04 Python
基于pip install django失败时的解决方法
Jun 12 Python
python3实现随机数
Jun 25 Python
numpy的文件存储.npy .npz 文件详解
Jul 09 Python
PyCharm的设置方法和第一个Python程序的建立
Jan 16 Python
Python如何爬取实时变化的WebSocket数据的方法
Mar 09 Python
Python中sorted()排序与字母大小写的问题
Jan 14 Python
基于 Python 实践感知器分类算法
Jan 07 Python
Python时间操作之pytz模块使用详解
Jun 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
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
关于BIG5-HKSCS的解决方法
2007/03/20 PHP
PHP 转义使用详解
2013/07/15 PHP
解决PHP里大量数据循环时内存耗尽的方法
2015/10/10 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
php微信公众号js-sdk开发应用
2016/11/28 PHP
js获取url参数的使用扩展实例
2007/12/29 Javascript
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
2010/04/20 Javascript
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
浅析jQuery的链式调用之each函数
2010/12/03 Javascript
解析使用JS 清空File控件的路径值
2013/07/08 Javascript
js实现在同一窗口浏览图片
2014/09/17 Javascript
JQuery实现动态添加删除评论的方法
2015/05/18 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
jQuery抛物线运动实现方法(附完整demo源码下载)
2016/01/08 Javascript
分享自己用JS做的扫雷小游戏
2016/02/17 Javascript
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
VUE v-model表单数据双向绑定完整示例
2019/01/21 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
2019/09/17 Javascript
[02:47]2018年度DOTA2最佳辅助位选手4号位-完美盛典
2018/12/17 DOTA
Python unittest 简单实现参数化的方法
2018/11/30 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
利用Python自动化操作AutoCAD的实现
2020/04/01 Python
python用什么编辑器进行项目开发
2020/06/17 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
2020/09/02 Python
使用Python实现音频双通道分离
2020/12/25 Python
英国现代、当代和设计师家具店:Furntastic
2020/07/18 全球购物
自荐书模板
2013/12/15 职场文书
企业授权委托书范本
2014/04/02 职场文书
父母对孩子说的话
2014/04/12 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python
一文了解JavaScript用Element Traversal新属性遍历子元素
2021/11/27 Javascript
Pandas数据结构之Series的使用
2022/03/31 Python
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
2022/05/25 SQL Server