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之画圈还不简单吗?
Sep 20 Python
Python中对列表排序实例
Jan 04 Python
Python创建系统目录的方法
Mar 11 Python
详解Python的迭代器、生成器以及相关的itertools包
Apr 02 Python
在Python中处理XML的教程
Apr 29 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
Dec 25 Python
Python 含参构造函数实例详解
May 25 Python
浅谈Pandas 排序之后索引的问题
Jun 07 Python
对python PLT中的image和skimage处理图片方法详解
Jan 10 Python
Python学习笔记之文件的读写操作实例分析
Aug 07 Python
Python如何实现远程方法调用
Aug 07 Python
Python时间操作之pytz模块使用详解
Jun 14 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
一个程序下载的管理程序(三)
2006/10/09 PHP
php 正则表达式小结
2009/08/31 PHP
php 获取本机外网/公网IP的代码
2010/05/09 PHP
PHP二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
php返回当前日期或者指定日期是周几
2015/05/21 PHP
关于Blog顶部的滚动导航条代码
2006/09/25 Javascript
Prototype使用指南之ajax
2007/01/10 Javascript
JS实现静止元素自动移动示例
2014/04/14 Javascript
javascript设计模式之module(模块)模式
2016/08/19 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
详解node.js的http模块实例演示
2018/07/12 Javascript
angular的输入和输出的使用方法
2018/09/22 Javascript
vue实现重置表单信息为空的方法
2018/09/29 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
微信小程序如何修改radio和checkbox的默认样式和图标
2019/07/24 Javascript
layui点击数据表格添加或删除一行的例子
2019/09/12 Javascript
vue实现购物车加减
2020/05/30 Javascript
python采集博客中上传的QQ截图文件
2014/07/18 Python
Python统计列表中的重复项出现的次数的方法
2014/08/18 Python
Python网络爬虫实例讲解
2016/04/28 Python
django批量导入xml数据
2016/10/16 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
Android分包MultiDex策略详解
2017/10/30 Python
详解Python开发中如何使用Hook技巧
2017/11/01 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
python3.4实现邮件发送功能
2018/05/28 Python
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
个人简历自我评价
2014/01/06 职场文书
竞聘副主任科员演讲稿
2014/01/11 职场文书
2014年教师节寄语
2014/04/03 职场文书
写给女朋友的检讨书
2015/05/06 职场文书
十二月早安励志心语大全
2019/12/03 职场文书
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
2021/07/07 SQL Server
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers
Android中的Launch Mode详情
2022/06/05 Java/Android