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采用requests库模拟登录和抓取数据的简单示例
Jul 05 Python
Python网络爬虫项目:内容提取器的定义
Oct 25 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
Mar 24 Python
Python判断对象是否相等及eq函数的讲解
Feb 25 Python
对pyqt5之menu和action的使用详解
Jun 20 Python
Python动态语言与鸭子类型详解
Jul 01 Python
原来我一直安装 Python 库的姿势都不对呀
Nov 11 Python
Python FTP文件定时自动下载实现过程解析
Nov 12 Python
Django 自定义分页器的实现代码
Nov 24 Python
python函数中将变量名转换成字符串实例
May 11 Python
pytorch 移动端部署之helloworld的使用
Oct 30 Python
python3 删除所有自定义变量的操作
Apr 08 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数组函数序列之array_combine() - 数组合并函数使用说明
2011/10/29 PHP
PHP的加密方式及原理
2012/06/14 PHP
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
Jquery作者John Resig自己封装的javascript 常用函数
2009/11/09 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
2016/03/08 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
2016/06/03 Javascript
AngularJS入门教程之表格实例详解
2016/07/27 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
JS字符串统计操作示例【遍历,截取,输出,计算】
2017/03/27 Javascript
js实现移动端导航点击自动滑动效果
2017/07/18 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
基于zepto.js实现登录界面
2017/10/09 Javascript
详解 vue.js用法和特性
2017/10/15 Javascript
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
2019/12/04 Javascript
JS this关键字在ajax中使用出现问题解决方案
2020/07/17 Javascript
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
[01:48:04]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第一场 2月7日
2021/03/11 DOTA
详解在Python程序中使用Cookie的教程
2015/04/30 Python
MxNet预训练模型到Pytorch模型的转换方式
2020/05/25 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
2020/07/20 Python
美国床垫连锁店:Mattress Firm
2021/02/13 全球购物
市场营销个人求职信范文
2014/02/02 职场文书
端午节活动策划方案
2014/03/09 职场文书
考研复习计划
2015/01/19 职场文书
2015年度物流工作总结
2015/04/30 职场文书
永不妥协观后感
2015/06/10 职场文书
导游词之黄果树瀑布
2019/09/20 职场文书
教你使用Pandas直接核算Excel中快递费用
2021/05/12 Python
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python