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 判断自定义对象类型
Mar 21 Python
Python文件和目录操作详解
Feb 08 Python
使用Python生成url短链接的方法
May 04 Python
Python处理JSON时的值报错及编码报错的两则解决实录
Jun 26 Python
Python:Scrapy框架中Item Pipeline组件使用详解
Dec 27 Python
python爬取足球直播吧五大联赛积分榜
Jun 13 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
Aug 26 Python
快速解决jupyter notebook启动需要密码的问题
Apr 21 Python
python实现三次密码验证的示例
Apr 29 Python
如何利用pygame实现打飞机小游戏
May 30 Python
Python装饰器的练习题
Nov 23 Python
分享提高 Python 代码的可读性的技巧
Mar 03 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 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
php获取301跳转URL简单实例
2013/12/16 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
Mootools 1.2教程 选项卡效果(Tabs)
2009/09/15 Javascript
关于jquery中全局函数each使用介绍
2013/12/10 Javascript
jQuery Migrate 1.1.0 Released 注意事项
2014/06/14 Javascript
移动Web中图片自适应的两种JavaScript解决方法
2015/06/18 Javascript
原生js和jQuery实现淡入淡出轮播效果
2015/12/25 Javascript
js获取隐藏元素宽高的实现方法
2016/05/19 Javascript
angularjs 表单密码验证自定义指令实现代码
2016/10/27 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
JavaScript编程设计模式之构造器模式实例分析
2017/10/25 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
[48:27]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
零基础写python爬虫之HTTP异常处理
2014/11/05 Python
python集合类型用法分析
2015/04/08 Python
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
利用Python为iOS10生成图标和截屏
2016/09/24 Python
django数据库migrate失败的解决方法解析
2018/02/08 Python
Python多重继承的方法解析执行顺序实例分析
2018/05/26 Python
windows下pycharm安装、创建文件、配置默认模板
2018/07/31 Python
python实现网页自动签到功能
2019/01/21 Python
Python使用Excel将数据写入多个sheet
2020/05/16 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
2020/06/22 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
团代会邀请函
2015/02/02 职场文书
学校实习推荐信
2015/03/27 职场文书
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js