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 23 Python
Python的Bottle框架中返回静态文件和JSON对象的方法
Apr 30 Python
利用numpy实现一、二维数组的拼接简单代码示例
Dec 15 Python
Python补齐字符串长度的实例
Nov 15 Python
Python利用itchat库向好友或者公众号发消息的实例
Feb 21 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
Aug 12 Python
修改 CentOS 6.x 上默认Python的方法
Sep 06 Python
Python实现病毒仿真器的方法示例(附demo)
Feb 19 Python
Python列表切片常用操作实例解析
Mar 10 Python
Python自动化操作实现图例绘制
Jul 09 Python
python环境搭建和pycharm的安装配置及汉化详细教程(零基础小白版)
Aug 19 Python
Vs Code中8个好用的python 扩展插件
Oct 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实现WEB动态网页静态
2006/10/09 PHP
PHP 裁剪图片成固定大小代码方法
2009/09/09 PHP
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
2014/07/25 PHP
PHP遍历数组的方法汇总
2015/04/30 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
PHP7修改的函数
2021/03/09 PHP
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
JavaScript开发规范要求(规范化代码)
2010/08/16 Javascript
IE的fireEvent方法概述及应用
2013/02/22 Javascript
用js来刷新当前页面保留参数的具体实现
2013/12/23 Javascript
jquery使用ajax实现微信自动回复插件
2014/04/28 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
JavaScript变量的作用域全解析
2015/08/14 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
JavaScript中各种引用类型的常用操作方法小结
2016/05/05 Javascript
vue loadmore 组件滑动加载更多源码解析
2017/07/19 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
2018/05/29 Javascript
详解小程序缓存插件(mrc)
2018/08/17 Javascript
express express-session的使用小结
2018/12/12 Javascript
微信小程序实现左右列表联动
2020/05/19 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
2019/05/01 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
简单介绍Python中的JSON使用
2015/04/28 Python
python处理xml文件的方法小结
2017/05/02 Python
ubuntu系统下使用pm2设置nodejs开机自启动的方法
2018/05/12 NodeJs
Python2包含中文报错的解决方法
2018/07/09 Python
对matplotlib改变colorbar位置和方向的方法详解
2018/12/13 Python
numpy concatenate数组拼接方法示例介绍
2019/05/27 Python
Python 批量刷博客园访问量脚本过程解析
2019/08/30 Python
2015年校医个人工作总结
2015/07/24 职场文书
2016年万圣节活动个人总结
2016/04/05 职场文书
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技