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字符串关键点
Dec 13 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
Jul 04 Python
将tensorflow的ckpt模型存储为npy的实例
Jul 09 Python
python中使用print输出中文的方法
Jul 16 Python
Python 处理图片像素点的实例
Jan 08 Python
python实现比较类的两个instance(对象)是否相等的方法分析
Jun 26 Python
python中 * 的用法详解
Jul 10 Python
python中如何使用insert函数
Jan 09 Python
聊聊python中的循环遍历
Sep 07 Python
python实现定时发送邮件
Dec 23 Python
Python爬虫之爬取最新更新的小说网站
May 06 Python
pandas中pd.groupby()的用法详解
Jun 16 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
PHP5在Apache下的两种模式的安装
2006/09/05 PHP
php中\r \r\n \t的区别示例介绍
2014/02/08 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
PHP代码加密的方法总结
2020/03/13 PHP
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
JQuery优缺点分析说明
2011/04/10 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
2013/01/23 Javascript
json的定义、标准格式及json字符串检验
2014/05/11 Javascript
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
2014/09/17 Javascript
JavaScript实现简单的tab选项卡切换
2016/01/05 Javascript
JavaScript File分段上传
2016/03/10 Javascript
微信小程序实现上传图片功能
2018/05/28 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
Python、Javascript中的闭包比较
2015/02/04 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
2020/04/22 Python
Python接口测试文件上传实例解析
2020/05/22 Python
如何快速理解python的垃圾回收机制
2020/09/01 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
一百多行代码实现react拖拽hooks
2021/03/23 Javascript
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
数控专业个人求职信范例
2013/11/29 职场文书
三年大学生活自我鉴定
2014/01/21 职场文书
幼儿园招生广告
2014/03/19 职场文书
战友聚会主持词
2014/04/02 职场文书
房地产广告策划方案
2014/05/15 职场文书
团队精神口号
2014/06/06 职场文书
公司证明怎么写
2014/09/22 职场文书
群众路线教育实践活动民主生活会个人检查对照思想汇报
2014/10/04 职场文书
2014年校长工作总结
2014/12/11 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
新闻简讯格式及范文
2015/07/22 职场文书
Python实现简单的俄罗斯方块游戏
2021/09/25 Python
Python使用永中文档转换服务
2022/05/06 Python
Django数据库(SQlite)基本入门使用教程
2022/07/07 Python