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中set使用
Jun 30 Python
Python 中 Virtualenv 和 pip 的简单用法详解
Aug 18 Python
Python实现感知机(PLA)算法
Dec 20 Python
Python实现简易版的Web服务器(推荐)
Jan 29 Python
python3实现基于用户的协同过滤
May 31 Python
python检测主机的连通性并记录到文件的实例
Jun 21 Python
Python函数装饰器实现方法详解
Dec 22 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
Dec 31 Python
浅析Python3 pip换源问题
Jan 06 Python
TensorFlow实现指数衰减学习率的方法
Feb 05 Python
Python爬取YY评级分数并保存数据实现过程解析
Jun 01 Python
Python就将所有的英文单词首字母变成大写
Feb 12 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 header函数使用教程
2013/09/05 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
Fleaphp常见函数功能与用法示例
2016/11/15 PHP
利用PHP实现一个简单的用户登记表示例
2017/04/25 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
PHP 实现缩略图
2021/03/09 PHP
Web版彷 Visual Studio 2003 颜色选择器
2007/01/09 Javascript
JavaScript原型继承之基础机制分析
2011/08/26 Javascript
表单元素与非表单元素刷新区别详细解析
2013/11/06 Javascript
js实现的标题栏新消息闪烁提示效果
2014/06/06 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
2014/07/18 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
2017/06/11 Javascript
Angular 2父子组件之间共享服务通信的实现
2017/07/04 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
浅谈pyhton学习中出现的各种问题(新手必看)
2017/05/17 Python
python在每个字符后添加空格的实例
2018/05/07 Python
基于python 爬虫爬到含空格的url的处理方法
2018/05/11 Python
Python发送邮件测试报告操作实例详解
2018/12/08 Python
pytorch自定义初始化权重的方法
2019/08/17 Python
python路径的写法及目录的获取方式
2019/12/26 Python
解决c++调用python中文乱码问题
2020/07/29 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
捷克移动配件网上商店:ProMobily.cz
2019/03/15 全球购物
豪华复古化妆:Besame Cosmetics
2019/09/06 全球购物
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
客户服务经理岗位职责
2014/01/29 职场文书
群众路线党课主持词
2014/04/01 职场文书
2014年体育部工作总结
2014/11/13 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
教师远程研修感悟
2015/11/18 职场文书
导游词之丽江普济寺
2019/10/22 职场文书
OpenCV全景图像拼接的实现示例
2021/06/05 Python
Java 超详细讲解数据结构中的堆的应用
2022/04/02 Java/Android