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中的匿名函数使用简介
Apr 27 Python
Python语言生成水仙花数代码示例
Dec 18 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
Apr 19 Python
在python win系统下 打开TXT文件的实例
Apr 29 Python
python爬取网页内容转换为PDF文件
Jul 28 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
Oct 29 Python
python 实现数字字符串左侧补零的方法
Dec 04 Python
Python pandas DataFrame操作的实现代码
Jun 21 Python
python多线程同步之文件读写控制
Feb 25 Python
python 爬取古诗文存入mysql数据库的方法
Jan 08 Python
基于Python的身份证验证识别和数据处理详解
Nov 14 Python
Python机器学习之底层实现KNN
Jun 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中将地址生成迅雷快车旋风链接的代码[测试通过]
2011/04/20 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
jQuery select控制插件
2009/08/17 Javascript
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
JavaScript中检查对象property的存在性方法介绍
2014/12/30 Javascript
JavaScript中使用数组方法汇总
2016/02/16 Javascript
AngularJS 自定义指令详解及示例代码
2016/08/17 Javascript
canvas仿iwatch时钟效果
2017/03/06 Javascript
Node.js中DNS模块学习总结
2018/02/28 Javascript
jQuery实现动态加载select下拉列表项功能示例
2018/05/31 jQuery
vue组件tabbar使用方法详解
2018/11/06 Javascript
js操作table中tr的顺序实现上移下移一行的效果
2018/11/22 Javascript
js实现秒表计时器
2019/12/16 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
浅谈MySQL中的触发器
2015/05/05 Python
请不要重复犯我在学习Python和Linux系统上的错误
2016/12/12 Python
python使用opencv读取图片的实例
2017/08/17 Python
利用python实现短信和电话提醒功能的例子
2019/08/08 Python
Python 使用指定的网卡发送HTTP请求的实例
2019/08/21 Python
python 使用while循环输出*组成的菱形实例
2020/04/12 Python
Python使用configparser读取ini配置文件
2020/05/25 Python
python 如何引入协程和原理分析
2020/11/30 Python
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
阿迪达斯西班牙官方网站:adidas西班牙
2016/07/21 全球购物
乌克兰第一的珠宝网上商店:Gold.ua
2019/11/29 全球购物
人事行政主管岗位职责
2013/12/22 职场文书
建筑院校毕业生求职信
2014/06/13 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
合作意向书范本
2019/04/17 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP
python 如何获取页面所有a标签下href的值
2021/05/06 Python
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL
Java完整实现记事本代码
2022/06/16 Java/Android