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 相关文章推荐
使用go和python递归删除.ds store文件的方法
Jan 22 Python
Python遍历指定文件及文件夹的方法
May 09 Python
Python实现高效求解素数代码实例
Jun 30 Python
基于python实现从尾到头打印链表
Nov 02 Python
python实现回旋矩阵方式(旋转矩阵)
Dec 04 Python
Python FtpLib模块应用操作详解
Dec 12 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
Dec 22 Python
python numpy数组复制使用实例解析
Jan 10 Python
python读取与处理netcdf数据方式
Feb 14 Python
Django框架配置mysql数据库实现过程
Apr 22 Python
Python 内存管理机制全面分析
Jan 16 Python
Python运算符+与+=的方法实例
Feb 18 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自定义函数收代码
2010/08/01 PHP
php中CI操作多个数据库的代码
2012/07/05 PHP
php常用Output和ptions/Info函数集介绍
2013/06/19 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
php使用sql server验证连接数据库的方法
2014/12/25 PHP
CodeIgniter集成smarty的方法详解
2016/05/26 PHP
PHP使用curl制作简易百度搜索
2016/11/03 PHP
Jquery工作常用实例 使用AJAX使网页进行异步更新
2011/07/26 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
jQuery实现购物车多物品数量的加减+总价计算
2014/06/06 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
完美解决spring websocket自动断开连接再创建引发的问题
2017/03/02 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
浅谈FastClick 填坑及源码解析
2018/03/02 Javascript
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
前端开发基础javaScript的六大作用
2020/08/06 Javascript
JS中箭头函数与this的写法和理解
2021/01/14 Javascript
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
2018/05/18 Python
对pandas中Series的map函数详解
2018/07/25 Python
python实现括号匹配的思路详解
2018/08/23 Python
15行Python代码实现网易云热门歌单实例教程
2019/03/10 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
2019/10/12 Python
Python如何实现在字符串里嵌入双引号或者单引号
2020/03/02 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
在求职信中如何凸显个人优势
2013/10/30 职场文书
经典导游欢迎词大全
2014/01/16 职场文书
对标管理实施方案
2014/03/12 职场文书
中国好声音华少广告词
2014/03/17 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
赞助商致辞
2015/07/30 职场文书
JS Object构造函数之Object.freeze
2021/04/28 Javascript
Java集成swagger文档组件
2021/06/28 Java/Android