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 相关文章推荐
获取Django项目的全部url方法详解
Oct 26 Python
django实现登录时候输入密码错误5次锁定用户十分钟
Nov 05 Python
Python基础教程之利用期物处理并发
Mar 29 Python
Python 通配符删除文件的实例
Apr 24 Python
使用Python和Prometheus跟踪天气的使用方法
May 06 Python
Python常见数据类型转换操作示例
May 08 Python
解析python实现Lasso回归
Sep 11 Python
python使用 request 发送表单数据操作示例
Sep 25 Python
python如何使用socketserver模块实现并发聊天
Dec 14 Python
python 爬取疫情数据的源码
Feb 09 Python
如何让python的运行速度得到提升
Jul 08 Python
Python基于百度API识别并提取图片中文字
Jun 27 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
一个程序下载的管理程序(三)
2006/10/09 PHP
php checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
php生成年月日下载列表的方法
2015/04/24 PHP
php+mysql实现简单的增删改查功能
2015/07/13 PHP
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
javascript代码调试之console.log 用法图文详解
2016/09/30 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
javascript闭包功能与用法实例分析
2017/04/06 Javascript
Vue实现百度下拉提示搜索功能
2017/06/21 Javascript
JS返回顶部实例代码
2020/08/09 Javascript
react redux入门示例
2018/04/19 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
2018/05/16 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
[00:52]黑暗之门更新 新英雄孽主驾临DOTA2
2016/08/24 DOTA
Python中pip更新和三方插件安装说明
2018/07/08 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
2019/07/01 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
2020/01/15 Python
python获取依赖包和安装依赖包教程
2020/02/13 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
python3 sleep 延时秒 毫秒实例
2020/05/04 Python
一款纯css3实现简单的checkbox复选框和radio单选框
2014/11/05 HTML / CSS
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
出口公司经理求职简历中的自我评价
2013/10/13 职场文书
英语专业推荐信
2013/11/16 职场文书
啦啦队口号大全
2014/06/16 职场文书
解除劳动合同协议书范本2014
2014/09/25 职场文书
创业计划书之熟食店
2019/10/16 职场文书
Redis实现订单自动过期功能的示例代码
2021/05/08 Redis
Redis 哨兵集群的实现
2021/06/18 Redis