python抽象基类用法实例分析


Posted in Python onJune 04, 2015

本文实例讲述了python抽象基类用法。分享给大家供大家参考。具体如下:

定义抽象类,需要使用abc模块,该模块定义了一个元类(ABCMeata),和装饰器 @abstractmethod, @abstractproperty
如果要实例化继承了Foo 的子类,子类必须实现了Foo所有的抽象方法(跟java一样),否则实例化报错。
抽象类不能直接实例化

#!coding=utf-8
from abc import ABCMeta, abstractmethod, abstractproperty
class Foo:
  __metaclass__ = ABCMeta
  @abstractmethod
  #在python3.0中 使用 class Foo(metaclass=ABCMeta)语法
  def spam(self, a, b):
    pass
  @abstractproperty
  def name(self):
    pass
class Bar(Foo):
  def spam(self, a, b):
    print a, b
  def name():
    pass
b = Bar()
b.spam(1,2)

抽象基类支持对已经存在的类进行注册,使其属于该基类,使用register()方法
向抽象基类注册某个类,对于注册类中的实例,涉及后续基类的类检测操作比如(isinstance, issubclass) 将返回True,向抽象基类注册某个类时,不会检查该类是否实现了任何抽象方法或特性,这种注册过程只会影响类型检查

class Crok(object):
  def spam(self, a, c):
    print "gork.span"
Foo.register(Grok)

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python socket.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 Python
python实现识别手写数字 python图像识别算法
Mar 23 Python
Python扩展内置类型详解
Mar 26 Python
python3.x 将byte转成字符串的方法
Jul 17 Python
python面向对象实现名片管理系统文件版
Apr 26 Python
python并发编程多进程之守护进程原理解析
Aug 20 Python
解决pytorch DataLoader num_workers出现的问题
Jan 14 Python
Python对象的属性访问过程详解
Mar 05 Python
jupyter notebook oepncv 显示一张图像的实现
Apr 24 Python
Pycharm安装python库的方法
Nov 24 Python
python中最小二乘法详细讲解
Feb 19 Python
Python 线程池模块之多线程操作代码
May 20 Python
python基于multiprocessing的多进程创建方法
Jun 04 #Python
python中管道用法入门实例
Jun 04 #Python
Python实现处理管道的方法
Jun 04 #Python
python定时器(Timer)用法简单实例
Jun 04 #Python
python避免死锁方法实例分析
Jun 04 #Python
python中字符串前面加r的作用
Jun 04 #Python
python生成器generator用法实例分析
Jun 04 #Python
You might like
PHP JSON格式数据交互实例代码详解
2011/01/13 PHP
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
Smarty局部缓存的几种方法简介
2014/06/17 PHP
PHP在网页中动态生成PDF文件详细教程
2014/07/05 PHP
php创建桌面快捷方式实现方法
2015/12/31 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
phpStudy vscode 搭建debug调试的教程详解
2020/07/28 PHP
javascript 事件查询综合 推荐收藏
2010/03/10 Javascript
jquery $.ajax各个事件执行顺序
2010/10/15 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
2015/03/03 Javascript
jquery使用经验小结
2015/05/20 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
Bootstrap导航简单实现代码
2017/03/06 Javascript
详解如何使用webpack打包Vue工程
2017/05/27 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
微信内置开发 iOS修改键盘换行为搜索的解决方案
2019/11/06 Javascript
原生js拖拽功能制作滑动条实例代码
2021/02/05 Javascript
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
python encode和decode的妙用
2009/09/02 Python
Python获取指定文件夹下的文件名的方法
2018/02/06 Python
Python创建普通菜单示例【基于win32ui模块】
2018/05/09 Python
在Python中过滤Windows文件名中的非法字符方法
2019/06/10 Python
python读取大文件越来越慢的原因与解决
2019/08/08 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
世界第一曲奇连锁店:Mrs. Fields Cookies
2017/02/04 全球购物
佐卡伊官网:中国知名珠宝品牌
2017/02/05 全球购物
Marc Jacobs彩妆官网:Marc Jacobs Beauty
2017/07/03 全球购物
马来西亚银饰品牌:JEOEL
2017/12/15 全球购物
实习教师自我鉴定
2013/12/09 职场文书
网上商城创业计划书范文
2014/01/31 职场文书
高中国旗下的演讲稿
2014/08/28 职场文书
甲午风云观后感
2015/06/02 职场文书
浙江省杭州市平均工资标准是多少?
2019/07/09 职场文书
古诗文之爱国名句(77句)
2019/09/24 职场文书
Nginx+SpringBoot实现负载均衡的示例
2021/03/31 Servers