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编写生成验证码的脚本的教程
May 04 Python
在Python中使用matplotlib模块绘制数据图的示例
May 04 Python
Python的Django框架中的URL配置与松耦合
Jul 15 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
Sep 18 Python
利用Python抓取行政区划码的方法
Nov 28 Python
python通过pip更新所有已安装的包实现方法
May 19 Python
Python编程实现二叉树及七种遍历方法详解
Jun 02 Python
从运行效率与开发效率比较Python和C++
Dec 14 Python
详解Python打包分发工具setuptools
Aug 05 Python
解决python3输入的坑——input()
Dec 05 Python
Django中如何用xlwt生成表格的方法步骤
Jan 31 Python
详解Python小数据池和代码块缓存机制
Apr 07 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面向对象
2012/02/22 PHP
PHP swfupload图片上传的实例代码
2013/09/30 PHP
php使用curl存储cookie的示例
2014/03/31 PHP
javascript TextArea动态显示剩余字符
2008/10/22 Javascript
javascript css float属性的特殊写法
2008/11/13 Javascript
网页中返回顶部代码(多种方法)另附注释说明
2013/04/24 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
js中parseInt函数浅谈
2013/07/31 Javascript
使用jQuery的attr方法来修改onclick值
2014/07/07 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
从0开始学Vue
2016/10/27 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
Bootstrap按钮组实例详解
2017/07/03 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
ant design vue 表格table 默认勾选几项的操作
2020/10/31 Javascript
Python常见文件操作的函数示例代码
2011/11/15 Python
python中pygame模块用法实例
2014/10/09 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
2015/05/11 Python
简单了解python中对象的取反运算符
2019/07/01 Python
Django单元测试工具test client使用详解
2019/08/02 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
python3 实现口罩抽签的功能
2020/03/11 Python
JAVA及PYTHON质数计算代码对比解析
2020/06/10 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
怎样在程序里获得一个空指针
2015/01/24 面试题
党员干部作风建设思想汇报范文
2014/10/25 职场文书
齐云山导游词
2015/02/06 职场文书
项目合作意向书
2015/05/08 职场文书
因个人原因离职的辞职信范文
2015/05/12 职场文书
学子宴致辞大全
2015/07/27 职场文书
八年级作文之感恩
2019/11/22 职场文书
windows11怎么查看自己安装的版本号? win11版本号的查看方法
2021/11/21 数码科技
日本十大血腥动漫,那些被禁播的动漫盘点
2022/03/21 日漫