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 返回汉字的汉语拼音
Feb 27 Python
Python实现扫描指定目录下的子目录及文件的方法
Jul 16 Python
Python中实现三目运算的方法
Jun 21 Python
Python控制多进程与多线程并发数总结
Oct 26 Python
Python利用flask sqlalchemy实现分页效果
Aug 02 Python
解决Spyder中图片显示太小的问题
Apr 27 Python
PYTHON基础-时间日期处理小结
May 05 Python
Python中的TCP socket写法示例
May 11 Python
使用apiDoc实现python接口文档编写
Nov 19 Python
Python实现使用dir获取类的方法列表
Dec 24 Python
Python super()函数使用及多重继承
May 06 Python
Python偏函数实现原理及应用
Nov 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
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
本地对象Array的原型扩展实现代码
2010/12/04 Javascript
关于Mozilla浏览器不支持innerText的解决办法
2011/01/01 Javascript
JS验证身份证有效性示例
2013/10/11 Javascript
jquery实现的淡入淡出下拉菜单效果
2015/08/25 Javascript
DIV+CSS+jQ实现省市联动可扩展
2016/06/22 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
2016/11/01 Javascript
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
深入理解angular2启动项目步骤
2017/07/15 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
2017/08/16 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
微信小程序实现YDUI的ScrollNav组件
2018/02/02 Javascript
原生js封装的ajax方法示例
2018/08/02 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
2018/08/29 Javascript
Nodejs核心模块之net和http的使用详解
2019/04/02 NodeJs
Node.js 深度调试方法解析
2020/07/28 Javascript
讲解Python中if语句的嵌套用法
2015/05/14 Python
Python六大开源框架对比
2015/10/19 Python
Python实现获取命令行输出结果的方法
2017/06/10 Python
Python文件和流(实例讲解)
2017/09/12 Python
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
Python3 replace()函数使用方法
2018/03/19 Python
python3转换code128条形码的方法
2019/04/17 Python
Pycharm新建模板默认添加个人信息的实例
2019/07/15 Python
Python3实现zip分卷压缩过程解析
2019/10/09 Python
Python图片的横坐标汉字实例
2019/12/04 Python
Windows下实现将Pascal VOC转化为TFRecords
2020/02/17 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
2020/05/15 Python
python判断all函数输出结果是否为true的方法
2020/12/03 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
HTML5新增元素如何兼容旧浏览器有哪些方法
2014/05/09 HTML / CSS
开幕式邀请函
2015/01/31 职场文书
攻击最高的10只幽灵系神奇宝贝,坚盾剑怪排第一,第五最为可怕
2022/03/18 日漫
python实现会员管理系统
2022/03/18 Python
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python